diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e8d435d..0c53828a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,10 +34,18 @@ jobs: with: version: nightly + - name: Update package with soldeer + run: forge soldeer update + + - name: Recursively update dependencies + run: | + chmod +x ./update-deps.sh + ./update-deps.sh + - name: Run Forge build run: | forge --version - forge build --sizes + forge build id: build - name: Run Forge tests diff --git a/.gitignore b/.gitignore index 1101fdfb..516242c3 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,6 @@ node_modules/ yarn-error.log .yarn .yarnrc.yml -script/data/* \ No newline at end of file +script/data/* +dependencies +deployments/**/exported_address \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index c9a4b0a3..6b649dc3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,3 @@ -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std -[submodule "lib/openzeppelin-contracts"] - path = lib/openzeppelin-contracts - url = https://github.com/openzeppelin/openzeppelin-contracts [submodule "lib/contract-template"] path = lib/contract-template url = https://github.com/axieinfinity/contract-template @@ -13,15 +7,3 @@ [submodule "lib/buffer"] path = lib/buffer url = https://github.com/ensdomains/buffer -[submodule "lib/pyth-sdk-solidity"] - path = lib/pyth-sdk-solidity - url = https://github.com/pyth-network/pyth-sdk-solidity -[submodule "lib/solady"] - path = lib/solady - url = https://github.com/vectorized/solady -[submodule "lib/foundry-deployment-kit"] - path = lib/foundry-deployment-kit - url = https://github.com/axieinfinity/foundry-deployment-kit -[submodule "lib/contract-libs"] - path = lib/contract-libs - url = https://github.com/axieinfinity/contract-libs diff --git a/CHANGELOG.md b/CHANGELOG.md index c84215b5..3fc4dace 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1 @@ -VERSION=v0.3.4 - SHA: 31f2c28744fa8628b707591dd30496a7bc63f6bb +VERSION=v0.3.5 - SHA: f1f54b02ad8dbef3ef9eae7b3ea0aa753d136df5 diff --git a/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-1719309944.json b/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-1719309944.json new file mode 100644 index 00000000..0ad40f0b --- /dev/null +++ b/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-1719309944.json @@ -0,0 +1,406 @@ +{ + "transactions": [ + { + "hash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionType": "CREATE", + "contractName": "RONRegistrarController", + "contractAddress": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "function": null, + "arguments": null, + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x539db6", + "value": "0x0", + "input": "0x60806040526000805460ff19169055600180556200001c62000022565b620000e9565b60005462010000900460ff1615620000905760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600054610100900460ff90811614620000e7576000805461ff00191661ff0017905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612fbc80620000f96000396000f3fe6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a6102453660046120d0565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120fa565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d610358366004612128565b610745565b005b34801561036b57600080fd5b5061035d61037a366004612128565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b8366004612128565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612158565b610815565b61035d61043b36600461218a565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d61047336600461220c565b6109d8565b34801561048457600080fd5b5061035d610493366004612313565b610b80565b3480156104a457600080fd5b5061035d610cb9565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d93660046124a3565b610cd9565b3480156104ea57600080fd5b506102a26104f936600461255e565b610e3a565b34801561050a57600080fd5b5061024a610519366004612128565b610e59565b34801561052a57600080fd5b5061024a610539366004612580565b610e84565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e366004612580565b610f12565b34801561057f57600080fd5b5061027361058e3660046125bc565b610f9d565b34801561059f57600080fd5b5061035d6105ae3660046120fa565b61104d565b3480156105bf57600080fd5b506103086105ce3660046120fa565b611061565b61035d6105e1366004612602565b611078565b3480156105f257600080fd5b5061035d610601366004612128565b611184565b34801561061257600080fd5b50610308610621366004612602565b6111a9565b34801561063257600080fd5b5061035d61064136600461255e565b611235565b34801561065257600080fd5b50610308600080516020612f6783398151915281565b34801561067457600080fd5b5061035d610683366004612158565b61124a565b34801561069457600080fd5b5061035d6106a33660046120fa565b61125e565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f7366004612580565b6112b7565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f826112f4565b92915050565b60008281526002602052604090206001015461076081611329565b61076a8383611333565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611355565b5050565b600080516020612f6783398151915261080a81611329565b610812611377565b50565b600061082081611329565b6107ee826113c9565b610831611420565b610839611468565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610f9d915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac82346126dc565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112b792505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906126ef565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab9493929190612735565b60405180910390a282156109c3576109c333846114c1565b6109cb611526565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f678339815191528b61153c565b610aca60008c61153c565b610ad3836113c9565b610adc86611546565b610ae6878961157d565b610aef89611607565b603a80546001600160a01b038088166001600160a01b031992831617909255603b8054878416908316179055603d8054928516929091169190911790558015610b73576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610baa81611329565b84801580610bb85750808414155b15610bd657604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c665783603f60008a8a85818110610bf857610bf8612769565b9050602002013581526020019081526020016000206000888885818110610c2157610c21612769565b9050602002016020810190610c369190612158565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bd9565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610ca895949392919061277f565b60405180910390a250505050505050565b600080516020612f67833981519152610cd181611329565b610812611678565b610ce1611420565b610ce9611468565b86610cf3816116b5565b610cfc88610f12565b610d1b57876040516308eee0fd60e31b81526004016107db9190612869565b6000610d26896112b7565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9d9190810190612936565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dda575080155b15610e00578a8a8383604051631fc5717160e01b81526004016107db9493929190612a18565b600080610e0d8d8c6116dd565b91509150610e228d8d8d8d8d8d8d8989611735565b505050505050610e3160018055565b50505050505050565b6000828152600360205260408120610e52908361185f565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e918361186b565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610eca908590600401612869565b602060405180830381865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612a52565b1592915050565b6000610f1d82610e84565b801561073f5750603a546001600160a01b03166396e494e8610f3e846112b7565b6040518263ffffffff1660e01b8152600401610f5c91815260200190565b602060405180830381865afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f9190612a52565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fd89089908990600401612a6f565b608060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190612aca565b8051825192945090925061102c91612aff565b9350806020015182602001516110429190612aff565b925050509250929050565b600061105881611329565b6107ee82611546565b600081815260036020526040812061073f90611959565b611080611420565b611088611468565b6000611093896112b7565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111059190810190612936565b60200151606001511561112d57886040516331597a5760e21b81526004016107db9190612869565b600061113f8a8a8a8a8a8a8a8a6111a9565b905061114b8882611963565b6000806111588c8b6116dd565b9150915061116d8c8c8c8b8b8b8b8989611735565b5050505061117a60018055565b5050505050505050565b60008281526002602052604090206001015461119f81611329565b61076a8383611355565b6000886111b5816116b5565b83158015906111cb57506001600160a01b038616155b156111e9576040516334fd817160e21b815260040160405180910390fd5b6111f28a6112b7565b89898989898989604051602001611210989796959493929190612ba3565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124081611329565b61076a838361157d565b600061125581611329565b6107ee82611607565b611266611420565b6037546000828152603e6020526040902054429161128391612aff565b106112a457604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b6108128133611a14565b61133d8282611a47565b600082815260036020526040902061076a9082611acd565b61135f8282611ae2565b600082815260036020526040902061076a9082611b49565b61137f611b5e565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114665760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114cd8383611ba7565b90508061076a576114e6836001600160a01b0316611c1d565b6114ef83611c33565b604051602001611500929190612c03565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612869565b603954611466906001600160a01b0316476114c1565b6107ee8282611333565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611415565b4281111561159e57604051630b4319e560e21b815260040160405180910390fd5b8181116115be576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b6001600160a01b03811661162e5760405163e99d5ac560e01b815260040160405180910390fd5b603980546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b611680611420565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ac3390565b6116be81610f12565b61081257806040516308eee0fd60e31b81526004016107db9190612869565b6000806116ea8484610f9d565b9092509050348111156117105760405163044044a560e21b815260040160405180910390fd5b348181039082146117255761172533826114c1565b5061172e611526565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b81526004016117a1959493929190612c81565b60408051808303816000875af11580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190612ccc565b909250905085156117fa576117fa88828989611c4a565b841561180a5761180a8b8b611cc8565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d86888760405161184a9493929190612cfa565b60405180910390a35050505050505050505050565b6000610e528383611d5f565b600080600080845190505b8083101561195157600085848151811061189257611892612769565b01602001516001600160f81b0319169050600160ff1b8110156118ba57600184019350611945565b600760fd1b6001600160f81b0319821610156118db57600284019350611945565b600f60fc1b6001600160f81b0319821610156118fc57600384019350611945565b601f60fb1b6001600160f81b03198216101561191d57600484019350611945565b603f60fa1b6001600160f81b03198216101561193e57600584019350611945565b6006840193505b50600190910190611876565b509392505050565b600061073f825490565b603854826001600160401b0316101561199a576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119b390426126dc565b90506036548110156119db57604051635320bcf960e01b8152600481018390526024016107db565b806037541015611a015760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b611a1e8282610e59565b6107ee57611a2b81611c1d565b611a36836020611d89565b604051602001611500929190612d32565b611a518282610e59565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a893390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e52836001600160a01b038416611f24565b611aec8282610e59565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e52836001600160a01b038416611f73565b60005460ff166114665760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611bd19190612da7565b60006040518083038185875af1925050503d8060008114611c0e576040519150601f19603f3d011682016040523d82523d6000602084013e611c13565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d89565b606061073f82611c4284612066565b600101611d89565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c7a90869086908690600401612dc3565b6000604051808303816000875af1158015611c99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc19190810190612de6565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611cf0908690602001612ebd565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611d1c929190612ee5565b6020604051808303816000875af1158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612f09565b6000826000018281548110611d7657611d76612769565b9060005260206000200154905092915050565b60606000611d98836002612f22565b611da3906002612aff565b6001600160401b03811115611dba57611dba612396565b6040519080825280601f01601f191660200182016040528015611de4576020820181803683370190505b509050600360fc1b81600081518110611dff57611dff612769565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e2e57611e2e612769565b60200101906001600160f81b031916908160001a9053506000611e52846002612f22565b611e5d906001612aff565b90505b6001811115611ed5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e9157611e91612769565b1a60f81b828281518110611ea757611ea7612769565b60200101906001600160f81b031916908160001a90535060049490941c93611ece81612f39565b9050611e60565b508315610e525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b6000818152600183016020526040812054801561205c576000611f976001836126dc565b8554909150600090611fab906001906126dc565b9050818114612010576000866000018281548110611fcb57611fcb612769565b9060005260206000200154905080876000018481548110611fee57611fee612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202157612021612f50565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561207e5760809290921c916010015b604083901c156120935760409290921c916008015b602083901c156120a85760209290921c916004015b601083901c156120bd5760109290921c916002015b600883901c1561073f5760010192915050565b6000602082840312156120e257600080fd5b81356001600160e01b031981168114610e5257600080fd5b60006020828403121561210c57600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b6000806040838503121561213b57600080fd5b82359150602083013561214d81612113565b809150509250929050565b60006020828403121561216a57600080fd5b8135610e5281612113565b6001600160401b038116811461081257600080fd5b60008060006040848603121561219f57600080fd5b83356001600160401b03808211156121b657600080fd5b818601915086601f8301126121ca57600080fd5b8135818111156121d957600080fd5b8760208285010111156121eb57600080fd5b6020928301955093505084013561220181612175565b809150509250925092565b6000806000806000806000806000806101408b8d03121561222c57600080fd5b8a3561223781612113565b995060208b013561224781612113565b985060408b013561225781612113565b975060608b0135965060808b0135955060a08b0135945060c08b013561227c81612113565b935060e08b013561228c81612113565b92506101008b013561229d81612113565b91506101208b01356122ae81612113565b809150509295989b9194979a5092959850565b60008083601f8401126122d357600080fd5b5081356001600160401b038111156122ea57600080fd5b6020830191508360208260051b850101111561172e57600080fd5b801515811461081257600080fd5b60008060008060006060868803121561232b57600080fd5b85356001600160401b038082111561234257600080fd5b61234e89838a016122c1565b9097509550602088013591508082111561236757600080fd5b50612374888289016122c1565b909450925050604086013561238881612305565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123ce576123ce612396565b60405290565b604051606081016001600160401b03811182821017156123ce576123ce612396565b604051601f8201601f191681016001600160401b038111828210171561241e5761241e612396565b604052919050565b60006001600160401b0382111561243f5761243f612396565b50601f01601f191660200190565b600082601f83011261245e57600080fd5b813561247161246c82612426565b6123f6565b81815284602083860101111561248657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156124be57600080fd5b87356001600160401b03808211156124d557600080fd5b6124e18b838c0161244d565b985060208a013591506124f382612113565b90965060408901359061250582612175565b90955060608901359061251782612113565b9094506080890135908082111561252d57600080fd5b5061253a8a828b016122c1565b90945092505060a088013561254e81612305565b8091505092959891949750929550565b6000806040838503121561257157600080fd5b50508035926020909101359150565b60006020828403121561259257600080fd5b81356001600160401b038111156125a857600080fd5b6125b48482850161244d565b949350505050565b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f18582860161244d565b925050602083013561214d81612175565b60008060008060008060008060e0898b03121561261e57600080fd5b88356001600160401b038082111561263557600080fd5b6126418c838d0161244d565b995060208b0135915061265382612113565b90975060408a01359061266582612175565b90965060608a0135955060808a01359061267e82612113565b90945060a08a0135908082111561269457600080fd5b506126a18b828c016122c1565b90945092505060c08901356126b581612305565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f6126c6565b60006020828403121561270157600080fd5b8151610e5281612175565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061274960608301868861270c565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561279f57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127fc5783356127df81612113565b6001600160a01b03168152928101926001929092019181016127cc565b8615156040870152935061280f92505050565b9695505050505050565b60005b8381101561283457818101518382015260200161281c565b50506000910152565b60008151808452612855816020860160208601612819565b601f01601f19169290920160200192915050565b602081526000610e52602083018461283d565b600061288a61246c84612426565b905082815283838301111561289e57600080fd5b610e52836020830184612819565b6000608082840312156128be57600080fd5b604051608081018181106001600160401b03821117156128e0576128e0612396565b806040525080915082516128f381612113565b8152602083015161290381612113565b6020820152604083015161291681612175565b6040820152606083015161292981612305565b6060919091015292915050565b6000602080838503121561294957600080fd5b82516001600160401b038082111561296057600080fd5b9084019060a0828703121561297457600080fd5b61297c6123ac565b82518281111561298b57600080fd5b83016060818903121561299d57600080fd5b6129a56123d4565b815160ff811681146129b657600080fd5b815281860151868201526040820151848111156129d257600080fd5b82019350601f840189136129e557600080fd5b6129f389855188870161287c565b6040820152825250612a07878486016128ac565b848201528094505050505092915050565b608081526000612a2b608083018761283d565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a6457600080fd5b8151610e5281612305565b604081526000612a82604083018561283d565b90506001600160401b03831660208301529392505050565b600060408284031215612aac57600080fd5b612ab46123ac565b9050815181526020820151602082015292915050565b60008060808385031215612add57600080fd5b612ae78484612a9a565b9150612af68460408501612a9a565b90509250929050565b8082018082111561073f5761073f6126c6565b81835260006020808501808196508560051b810191508460005b87811015612b965782840389528135601e19883603018112612b4d57600080fd5b870185810190356001600160401b03811115612b6857600080fd5b803603821315612b7757600080fd5b612b8286828461270c565b9a87019a9550505090840190600101612b2c565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612bec9083018587612b12565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612c4e81602a850160208801612819565b660103b30b63ab2960cd1b602a918401918201528351612c75816031840160208801612819565b01603101949350505050565b85815260a060208201526000612c9a60a083018761283d565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612cdf57600080fd5b8251612cea81612175565b6020939093015192949293505050565b608081526000612d0d608083018761283d565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d6a816017850160208801612819565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d9b816028840160208801612819565b01602801949350505050565b60008251612db9818460208701612819565b9190910192915050565b838152604060208201526000612ddd604083018486612b12565b95945050505050565b60006020808385031215612df957600080fd5b82516001600160401b0380821115612e1057600080fd5b818501915085601f830112612e2457600080fd5b815181811115612e3657612e36612396565b8060051b612e458582016123f6565b9182528381018501918581019089841115612e5f57600080fd5b86860192505b83831015612eb057825185811115612e7d5760008081fd5b8601603f81018b13612e8f5760008081fd5b612ea08b898301516040840161287c565b8352509186019190860190612e65565b9998505050505050505050565b60008251612ecf818460208701612819565b63173937b760e11b920191825250600401919050565b6001600160a01b03831681526040602082018190526000906125b49083018461283d565b600060208284031215612f1b57600080fd5b5051919050565b808202811582820484141761073f5761073f6126c6565b600081612f4857612f486126c6565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203a109c3a44f7a0139823c421a40975bf8029ef66d689d4458e4d45cf8a5dbf8264736f6c63430008150033", + "nonce": "0x2f7a3", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "function": "upgrade(address,address)", + "arguments": [ + "0x512699B52ac2dC2b2aD505d9f29DcDad078FA799", + "0xcE19C5041734c825EE8A4476dC070c4f72BbbbfA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "gas": "0x12b56", + "value": "0x0", + "input": "0x99a88ec4000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799000000000000000000000000ce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "nonce": "0x2f7a4", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionType": "CREATE", + "contractName": "RNSCommission", + "contractAddress": "0xea29df2c7120f1a579785e65db9fd3372f851acb", + "function": null, + "arguments": null, + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x321ebc", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611c46806100ec6000396000f3fe6080604052600436106100ec5760003560e01c806391cbc73f1161008a578063c42ef38c11610059578063c42ef38c14610297578063ca15c873146102cb578063d547741f146102eb578063e92108b51461030b57600080fd5b806391cbc73f1461022257806391d14854146102425780639fd50e5814610262578063a217fddf1461028257600080fd5b806336568abe116100c657806336568abe146101945780634c255c97146101b45780635dc30fe5146101ca5780639010d07c146101ea57600080fd5b806301ffc9a714610100578063248a9ca3146101355780632f2ff15d1461017457600080fd5b366100fb576100f961032d565b005b600080fd5b34801561010c57600080fd5b5061012061011b366004611324565b610367565b60405190151581526020015b60405180910390f35b34801561014157600080fd5b5061016661015036600461134e565b6000908152600160208190526040909120015490565b60405190815260200161012c565b34801561018057600080fd5b506100f961018f36600461137c565b610392565b3480156101a057600080fd5b506100f96101af36600461137c565b6103bd565b3480156101c057600080fd5b5061016661271081565b3480156101d657600080fd5b506100f96101e53660046113f8565b610440565b3480156101f657600080fd5b5061020a61020536600461143a565b610455565b6040516001600160a01b03909116815260200161012c565b34801561022e57600080fd5b506100f961023d36600461145c565b610474565b34801561024e57600080fd5b5061012061025d36600461137c565b610605565b34801561026e57600080fd5b506100f961027d3660046114df565b610630565b34801561028e57600080fd5b50610166600081565b3480156102a357600080fd5b506101667f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf281565b3480156102d757600080fd5b506101666102e636600461134e565b61074e565b3480156102f757600080fd5b506100f961030636600461137c565b610765565b34801561031757600080fd5b5061032061078b565b60405161012c91906115b8565b6103577f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf233610605565b15610365576103653461089c565b565b60006001600160e01b03198216635a05180f60e01b148061038c575061038c82610a9d565b92915050565b600082815260016020819052604090912001546103ae81610ad2565b6103b88383610adf565b505050565b6001600160a01b03811633146104325760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61043c8282610b01565b5050565b600061044b81610ad2565b6103b88383610b23565b600082815260026020526040812061046d9083610ca6565b9392505050565b600054610100900460ff16158080156104945750600054600160ff909116105b806104ae5750303b1580156104ae575060005460ff166001145b6105115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610429565b6000805460ff191660011790558015610534576000805461ff0019166101001790555b61053f600087610cb2565b8160005b818110156105ab5761059b7f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf286868481811061058157610581611640565b90506020020160208101906105969190611656565b610cb2565b6105a481611689565b9050610543565b506105b68686610b23565b5080156105fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061063b81610ad2565b603554851061065d57604051634ec4810560e11b815260040160405180910390fd5b6001600160a01b0384166106845760405163e99d5ac560e01b815260040160405180910390fd5b836035868154811061069857610698611640565b906000526020600020906003020160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508282603587815481106106e2576106e2611640565b90600052602060002090600302016002019182610700929190611738565b5084336001600160a01b03167faa3076bb2e00a425a96ce6aa8762a984fe8ed14922e3fba98cfa90683cb05ff886868660405161073f93929190611822565b60405180910390a35050505050565b600081815260026020526040812061038c90610cbc565b6000828152600160208190526040909120015461078181610ad2565b6103b88383610b01565b60606035805480602002602001604051908101604052809291908181526020016000905b82821015610893576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191610802906116b8565b80601f016020809104026020016040519081016040528092919081815260200182805461082e906116b8565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081525050815260200190600101906107af565b50505050905090565b806000036108bd576040516370bf851360e11b815260040160405180910390fd5b60355460008190036108e257604051634ec4810560e11b815260040160405180910390fd5b60006108ef600183611850565b90506000805b828110156109e457600061092d866035848154811061091657610916611640565b906000526020600020906003020160010154610cc6565b90506109398184611863565b92506109716035838154811061095157610951611640565b60009182526020909120600390910201546001600160a01b031682610cdf565b6035828154811061098457610984611640565b6000918252602091829020600390910201546040518381526001600160a01b03909116917fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af910160405180910390a2506109dd81611689565b90506108f5565b5083811015610a9757610a2c60358381548110610a0357610a03611640565b60009182526020909120600390910201546001600160a01b0316610a278387611850565b610cdf565b60358281548110610a3f57610a3f611640565b60009182526020909120600390910201546001600160a01b03167fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af610a848387611850565b6040519081526020015b60405180910390a25b50505050565b60006001600160e01b03198216637965db0b60e01b148061038c57506301ffc9a760e01b6001600160e01b031983161461038c565b610adc8133610d44565b50565b610ae98282610d77565b60008281526002602052604090206103b89082610de2565b610b0b8282610df7565b60008281526002602052604090206103b89082610e5e565b806000819003610b4657604051634ec4810560e11b815260040160405180910390fd5b610b5260356000611284565b6000805b82811015610c48576000858583818110610b7257610b72611640565b9050602002810190610b849190611876565b610b92906020810190611656565b6001600160a01b031603610bb95760405163e99d5ac560e01b815260040160405180910390fd5b848482818110610bcb57610bcb611640565b9050602002810190610bdd9190611876565b610beb906020013583611863565b91506035858583818110610c0157610c01611640565b9050602002810190610c139190611876565b815460018101835560009283526020909220909160030201610c358282611896565b505080610c4190611689565b9050610b56565b506127108114610c6b5760405163648564d360e01b815260040160405180910390fd5b336001600160a01b03167f28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c008585604051610a8e9291906119c0565b600061046d8383610e73565b61043c8282610adf565b600061038c825490565b6000612710610cd58385611a92565b61046d9190611aa9565b6000610ceb8383610e9d565b9050806103b857610d04836001600160a01b0316610f13565b610d0d83610f29565b604051602001610d1e929190611acb565b60408051601f198184030181529082905262461bcd60e51b825261042991600401611b49565b610d4e8282610605565b61043c57610d5b81610f13565b610d66836020610f3c565b604051602001610d1e929190611b5c565b610d818282610605565b61043c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600061046d836001600160a01b0384166110d8565b610e018282610605565b1561043c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061046d836001600160a01b038416611127565b6000826000018281548110610e8a57610e8a611640565b9060005260206000200154905092915050565b604080516000808252602082019092526001600160a01b038416908390604051610ec79190611bd1565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5090949350505050565b606061038c6001600160a01b0383166014610f3c565b606061038c82610f388461121a565b6001015b60606000610f4b836002611a92565b610f56906002611863565b67ffffffffffffffff811115610f6e57610f6e6116a2565b6040519080825280601f01601f191660200182016040528015610f98576020820181803683370190505b509050600360fc1b81600081518110610fb357610fb3611640565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610fe257610fe2611640565b60200101906001600160f81b031916908160001a9053506000611006846002611a92565b611011906001611863565b90505b6001811115611089576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061104557611045611640565b1a60f81b82828151811061105b5761105b611640565b60200101906001600160f81b031916908160001a90535060049490941c9361108281611be3565b9050611014565b50831561046d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610429565b600081815260018301602052604081205461111f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561038c565b50600061038c565b6000818152600183016020526040812054801561121057600061114b600183611850565b855490915060009061115f90600190611850565b90508181146111c457600086600001828154811061117f5761117f611640565b90600052602060002001549050808760000184815481106111a2576111a2611640565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806111d5576111d5611bfa565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061038c565b600091505061038c565b600080608083901c156112325760809290921c916010015b604083901c156112475760409290921c916008015b602083901c1561125c5760209290921c916004015b601083901c156112715760109290921c916002015b600883901c1561038c5760010192915050565b5080546000825560030290600052602060002090810190610adc91905b808211156112d65780546001600160a01b03191681556000600182018190556112cd60028301826112da565b506003016112a1565b5090565b5080546112e6906116b8565b6000825580601f106112f6575050565b601f016020900490600052602060002090810190610adc91905b808211156112d65760008155600101611310565b60006020828403121561133657600080fd5b81356001600160e01b03198116811461046d57600080fd5b60006020828403121561136057600080fd5b5035919050565b6001600160a01b0381168114610adc57600080fd5b6000806040838503121561138f57600080fd5b8235915060208301356113a181611367565b809150509250929050565b60008083601f8401126113be57600080fd5b50813567ffffffffffffffff8111156113d657600080fd5b6020830191508360208260051b85010111156113f157600080fd5b9250929050565b6000806020838503121561140b57600080fd5b823567ffffffffffffffff81111561142257600080fd5b61142e858286016113ac565b90969095509350505050565b6000806040838503121561144d57600080fd5b50508035926020909101359150565b60008060008060006060868803121561147457600080fd5b853561147f81611367565b9450602086013567ffffffffffffffff8082111561149c57600080fd5b6114a889838a016113ac565b909650945060408801359150808211156114c157600080fd5b506114ce888289016113ac565b969995985093965092949392505050565b600080600080606085870312156114f557600080fd5b84359350602085013561150781611367565b9250604085013567ffffffffffffffff8082111561152457600080fd5b818701915087601f83011261153857600080fd5b81358181111561154757600080fd5b88602082850101111561155957600080fd5b95989497505060200194505050565b60005b8381101561158357818101518382015260200161156b565b50506000910152565b600081518084526115a4816020860160208601611568565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561163257888303603f19018552815180516001600160a01b031684528781015188850152860151606087850181905261161e8186018361158c565b9689019694505050908601906001016115df565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561166857600080fd5b813561046d81611367565b634e487b7160e01b600052601160045260246000fd5b60006001820161169b5761169b611673565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806116cc57607f821691505b6020821081036116ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103b857600081815260208120601f850160051c810160208610156117195750805b601f850160051c820191505b818110156105fd57828155600101611725565b67ffffffffffffffff831115611750576117506116a2565b6117648361175e83546116b8565b836116f2565b6000601f84116001811461179857600085156117805750838201355b600019600387901b1c1916600186901b1783556117f2565b600083815260209020601f19861690835b828110156117c957868501358255602094850194600190920191016117a9565b50868210156117e65760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061184790830184866117f9565b95945050505050565b8181038181111561038c5761038c611673565b8082018082111561038c5761038c611673565b60008235605e1983360301811261188c57600080fd5b9190910192915050565b81356118a181611367565b81546001600160a01b0319166001600160a01b03919091161781556020828101356001838101919091559060028301604085013536869003601e190181126118e857600080fd5b8501803567ffffffffffffffff81111561190157600080fd5b803603848301131561191257600080fd5b6119268161192085546116b8565b856116f2565b6000601f82116001811461195c576000831561194457508382018601355b600019600385901b1c1916600184901b1785556119b5565b600085815260209020601f19841690835b8281101561198c5786850189013582559388019390890190880161196d565b50848210156119ab5760001960f88660031b161c198885880101351681555b50508683881b0185555b505050505050505050565b60208082528181018390526000906040808401600586901b8501820187855b8881101561163257878303603f190184528135368b9003605e19018112611a0557600080fd5b8a0160608135611a1481611367565b6001600160a01b0316855281880135888601528682013536839003601e19018112611a3e57600080fd5b90910187810191903567ffffffffffffffff811115611a5c57600080fd5b803603831315611a6b57600080fd5b8188870152611a7d82870182856117f9565b968901969550505091860191506001016119df565b808202811582820484141761038c5761038c611673565b600082611ac657634e487b7160e01b600052601260045260246000fd5b500490565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351611b1681602a850160208801611568565b660103b30b63ab2960cd1b602a918401918201528351611b3d816031840160208801611568565b01603101949350505050565b60208152600061046d602083018461158c565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611b94816017850160208801611568565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611bc5816028840160208801611568565b01602801949350505050565b6000825161188c818460208701611568565b600081611bf257611bf2611673565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208d51978c729b6a9c0e0ecd5b61562f366dfd09974e656890ad9d58de84f6745264736f6c63430008150033", + "nonce": "0x2f7a5", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionType": "CREATE", + "contractName": "TransparentProxyOZv4_9_5", + "contractAddress": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "function": null, + "arguments": [ + "0xea29DF2C7120F1A579785E65db9fD3372F851aCB", + "0x505d91E8fd2091794b45b27f86C045529fa92CD7", + "0x91cbc73f000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x1f7438", + "value": "0x0", + "input": "0x608060405260405162000e4038038062000e4083398101604081905262000026916200042a565b8282828281620000398282600062000053565b506200004790508262000085565b5050505050506200055d565b6200005e83620000f7565b6000825111806200006c5750805b1562000080576200007e838362000139565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c760008051602062000df9833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000f48162000168565b50565b620001028162000206565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000161838360405180606001604052806027815260200162000e19602791396200029d565b9392505050565b6001600160a01b038116620001d35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000df98339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b620002755760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001ca565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001e5565b6060600080856001600160a01b031685604051620002bc91906200050a565b600060405180830381855af49150503d8060008114620002f9576040519150601f19603f3d011682016040523d82523d6000602084013e620002fe565b606091505b50909250905062000312868383876200031c565b9695505050505050565b606083156200039057825160000362000388576001600160a01b0385163b620003885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001ca565b50816200039c565b6200039c8383620003a4565b949350505050565b815115620003b55781518083602001fd5b8060405162461bcd60e51b8152600401620001ca919062000528565b80516001600160a01b0381168114620003e957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200042157818101518382015260200162000407565b50506000910152565b6000806000606084860312156200044057600080fd5b6200044b84620003d1565b92506200045b60208501620003d1565b60408501519092506001600160401b03808211156200047957600080fd5b818601915086601f8301126200048e57600080fd5b815181811115620004a357620004a3620003ee565b604051601f8201601f19908116603f01168101908382118183101715620004ce57620004ce620003ee565b81604052828152896020848701011115620004e857600080fd5b620004fb83602083016020880162000404565b80955050505050509250925092565b600082516200051e81846020870162000404565b9190910192915050565b60208152600082518060208401526200054981604085016020870162000404565b601f01601f19169190910160400192915050565b61088c806200056d6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f610169565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a5761005361019c565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a576100536101f3565b63070d7c6960e41b6001600160e01b031982160161009a57610053610239565b621eb96f60e61b6001600160e01b03198216016100b95761005361026a565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102aa565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102be565b565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a66102ce565b60006101b53660048184610683565b8101906101c291906106c9565b90506101df816040518060200160405280600081525060006102d9565b505060408051602081019091526000815290565b60606000806102053660048184610683565b81019061021291906106fa565b91509150610222828260016102d9565b604051806020016040528060008152509250505090565b60606102436102ce565b60006102523660048184610683565b81019061025f91906106c9565b90506101df81610305565b60606102746102ce565b600061027e610169565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102b46102ce565b600061027e61035c565b6101676102c961035c565b61036b565b341561016757600080fd5b6102e28361038f565b6000825111806102ef5750805b15610300576102fe83836103cf565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e610169565b604080516001600160a01b03928316815291841660208301520160405180910390a1610359816103fb565b50565b60006103666104a4565b905090565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b610398816104cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606103f4838360405180606001604052806027815260200161083060279139610560565b9392505050565b6001600160a01b0381166104605760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018d565b6001600160a01b0381163b6105395760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610483565b6060600080856001600160a01b03168560405161057d91906107e0565b600060405180830381855af49150503d80600081146105b8576040519150601f19603f3d011682016040523d82523d6000602084013e6105bd565b606091505b50915091506105ce868383876105d8565b9695505050505050565b60608315610647578251600003610640576001600160a01b0385163b6106405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b5081610651565b6106518383610659565b949350505050565b8151156106695781518083602001fd5b8060405162461bcd60e51b815260040161014e91906107fc565b6000808585111561069357600080fd5b838611156106a057600080fd5b5050820193919092039150565b80356001600160a01b03811681146106c457600080fd5b919050565b6000602082840312156106db57600080fd5b6103f4826106ad565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561070d57600080fd5b610716836106ad565b9150602083013567ffffffffffffffff8082111561073357600080fd5b818501915085601f83011261074757600080fd5b813581811115610759576107596106e4565b604051601f8201601f19908116603f01168101908382118183101715610781576107816106e4565b8160405282815288602084870101111561079a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107d75781810151838201526020016107bf565b50506000910152565b600082516107f28184602087016107bc565b9190910192915050565b602081526000825180602084015261081b8160408501602087016107bc565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a207c78ed3af0a4f57ce2b6c2fd644d6f8debc43e54eebfade2164eaf01f76a464736f6c63430008150033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000ea29df2c7120f1a579785e65db9fd3372f851acb000000000000000000000000505d91e8fd2091794b45b27f86c045529fa92cd70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000026491cbc73f000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa79900000000000000000000000000000000000000000000000000000000", + "nonce": "0x2f7a6", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "function": "setTreasury(address)", + "arguments": [ + "0x8998B6EB8F3742404b25586B2F9E1082b8Afb2CA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "gas": "0x10e50", + "value": "0x0", + "input": "0xf0f442600000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "nonce": "0x2f7a7", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xb962edded164f55d136e491a3022246815e1b5a8", + "function": "setTreasury(address)", + "arguments": [ + "0x8998B6EB8F3742404b25586B2F9E1082b8Afb2CA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0xb962edded164f55d136e491a3022246815e1b5a8", + "gas": "0x11e9a", + "value": "0x0", + "input": "0xf0f442600000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "nonce": "0x2f7a8", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x29d133", + "logs": [ + { + "address": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000004000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionIndex": "0x0", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x29d133", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2a69c5", + "logs": [ + { + "address": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ce19c5041734c825ee8a4476dc070c4f72bbbbfa" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000002000000000002000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000020000000000000000000000000000000000000400000000000008000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionIndex": "0x1", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x9892", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4378bf", + "logs": [ + { + "address": "0xea29df2c7120f1a579785e65db9fd3372f851acb", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionIndex": "0x2", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x190efa", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0xea29df2c7120f1a579785e65db9fd3372f851acb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x537be7", + "logs": [ + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ea29df2c7120f1a579785e65db9fd3372f851acb" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf2", + "0x000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf2", + "0x000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c00", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000505d91e8fd2091794b45b27f86c045529fa92cd7", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000400000000000000000000000400000000000000000000000000000002000000000000000000000000000000000000084001200000000000000000000000002000000000000080000000000000000000000000000020000000000000400000800000000800000000000000000000080000000000000000000000000800000000000000000000280000004000000800000000000000000000000004000000400080000080800000000001000000000000000000020000000000000000000040004000000000400000100000000000020000000000000000000000000000000000500000000000000020000000000000010", + "type": "0x0", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x100328", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x540ea4", + "logs": [ + { + "address": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "topics": [ + "0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1", + "0x0000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000004000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008000000000000000000000000000000000000000000000000100000000", + "type": "0x0", + "transactionHash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionIndex": "0x4", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x92bd", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x54a18d", + "logs": [ + { + "address": "0xb962edded164f55d136e491a3022246815e1b5a8", + "topics": [ + "0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1", + "0x0000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionIndex": "0x5", + "logIndex": "0xb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000010000000000000000000000000000000004000000000000000000000000000000002000000400000000000000000000000000000000000000000000000000000000000000000000000000000000008000000200000000000000000000000000000000000000000100000000", + "type": "0x0", + "transactionHash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionIndex": "0x5", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x92e9", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0xb962edded164f55d136e491a3022246815e1b5a8", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1719309944, + "chain": 2021, + "commit": "4bb6a99" +} \ No newline at end of file diff --git a/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-latest.json b/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-latest.json new file mode 100644 index 00000000..0ad40f0b --- /dev/null +++ b/broadcast/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol/2021/run-latest.json @@ -0,0 +1,406 @@ +{ + "transactions": [ + { + "hash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionType": "CREATE", + "contractName": "RONRegistrarController", + "contractAddress": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "function": null, + "arguments": null, + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x539db6", + "value": "0x0", + "input": "0x60806040526000805460ff19169055600180556200001c62000022565b620000e9565b60005462010000900460ff1615620000905760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600054610100900460ff90811614620000e7576000805461ff00191661ff0017905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612fbc80620000f96000396000f3fe6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a6102453660046120d0565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120fa565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d610358366004612128565b610745565b005b34801561036b57600080fd5b5061035d61037a366004612128565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b8366004612128565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612158565b610815565b61035d61043b36600461218a565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d61047336600461220c565b6109d8565b34801561048457600080fd5b5061035d610493366004612313565b610b80565b3480156104a457600080fd5b5061035d610cb9565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d93660046124a3565b610cd9565b3480156104ea57600080fd5b506102a26104f936600461255e565b610e3a565b34801561050a57600080fd5b5061024a610519366004612128565b610e59565b34801561052a57600080fd5b5061024a610539366004612580565b610e84565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e366004612580565b610f12565b34801561057f57600080fd5b5061027361058e3660046125bc565b610f9d565b34801561059f57600080fd5b5061035d6105ae3660046120fa565b61104d565b3480156105bf57600080fd5b506103086105ce3660046120fa565b611061565b61035d6105e1366004612602565b611078565b3480156105f257600080fd5b5061035d610601366004612128565b611184565b34801561061257600080fd5b50610308610621366004612602565b6111a9565b34801561063257600080fd5b5061035d61064136600461255e565b611235565b34801561065257600080fd5b50610308600080516020612f6783398151915281565b34801561067457600080fd5b5061035d610683366004612158565b61124a565b34801561069457600080fd5b5061035d6106a33660046120fa565b61125e565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f7366004612580565b6112b7565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f826112f4565b92915050565b60008281526002602052604090206001015461076081611329565b61076a8383611333565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611355565b5050565b600080516020612f6783398151915261080a81611329565b610812611377565b50565b600061082081611329565b6107ee826113c9565b610831611420565b610839611468565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610f9d915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac82346126dc565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112b792505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906126ef565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab9493929190612735565b60405180910390a282156109c3576109c333846114c1565b6109cb611526565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f678339815191528b61153c565b610aca60008c61153c565b610ad3836113c9565b610adc86611546565b610ae6878961157d565b610aef89611607565b603a80546001600160a01b038088166001600160a01b031992831617909255603b8054878416908316179055603d8054928516929091169190911790558015610b73576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610baa81611329565b84801580610bb85750808414155b15610bd657604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c665783603f60008a8a85818110610bf857610bf8612769565b9050602002013581526020019081526020016000206000888885818110610c2157610c21612769565b9050602002016020810190610c369190612158565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bd9565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610ca895949392919061277f565b60405180910390a250505050505050565b600080516020612f67833981519152610cd181611329565b610812611678565b610ce1611420565b610ce9611468565b86610cf3816116b5565b610cfc88610f12565b610d1b57876040516308eee0fd60e31b81526004016107db9190612869565b6000610d26896112b7565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9d9190810190612936565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dda575080155b15610e00578a8a8383604051631fc5717160e01b81526004016107db9493929190612a18565b600080610e0d8d8c6116dd565b91509150610e228d8d8d8d8d8d8d8989611735565b505050505050610e3160018055565b50505050505050565b6000828152600360205260408120610e52908361185f565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e918361186b565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610eca908590600401612869565b602060405180830381865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612a52565b1592915050565b6000610f1d82610e84565b801561073f5750603a546001600160a01b03166396e494e8610f3e846112b7565b6040518263ffffffff1660e01b8152600401610f5c91815260200190565b602060405180830381865afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f9190612a52565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fd89089908990600401612a6f565b608060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190612aca565b8051825192945090925061102c91612aff565b9350806020015182602001516110429190612aff565b925050509250929050565b600061105881611329565b6107ee82611546565b600081815260036020526040812061073f90611959565b611080611420565b611088611468565b6000611093896112b7565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111059190810190612936565b60200151606001511561112d57886040516331597a5760e21b81526004016107db9190612869565b600061113f8a8a8a8a8a8a8a8a6111a9565b905061114b8882611963565b6000806111588c8b6116dd565b9150915061116d8c8c8c8b8b8b8b8989611735565b5050505061117a60018055565b5050505050505050565b60008281526002602052604090206001015461119f81611329565b61076a8383611355565b6000886111b5816116b5565b83158015906111cb57506001600160a01b038616155b156111e9576040516334fd817160e21b815260040160405180910390fd5b6111f28a6112b7565b89898989898989604051602001611210989796959493929190612ba3565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124081611329565b61076a838361157d565b600061125581611329565b6107ee82611607565b611266611420565b6037546000828152603e6020526040902054429161128391612aff565b106112a457604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b6108128133611a14565b61133d8282611a47565b600082815260036020526040902061076a9082611acd565b61135f8282611ae2565b600082815260036020526040902061076a9082611b49565b61137f611b5e565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114665760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114cd8383611ba7565b90508061076a576114e6836001600160a01b0316611c1d565b6114ef83611c33565b604051602001611500929190612c03565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612869565b603954611466906001600160a01b0316476114c1565b6107ee8282611333565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611415565b4281111561159e57604051630b4319e560e21b815260040160405180910390fd5b8181116115be576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b6001600160a01b03811661162e5760405163e99d5ac560e01b815260040160405180910390fd5b603980546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b611680611420565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ac3390565b6116be81610f12565b61081257806040516308eee0fd60e31b81526004016107db9190612869565b6000806116ea8484610f9d565b9092509050348111156117105760405163044044a560e21b815260040160405180910390fd5b348181039082146117255761172533826114c1565b5061172e611526565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b81526004016117a1959493929190612c81565b60408051808303816000875af11580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190612ccc565b909250905085156117fa576117fa88828989611c4a565b841561180a5761180a8b8b611cc8565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d86888760405161184a9493929190612cfa565b60405180910390a35050505050505050505050565b6000610e528383611d5f565b600080600080845190505b8083101561195157600085848151811061189257611892612769565b01602001516001600160f81b0319169050600160ff1b8110156118ba57600184019350611945565b600760fd1b6001600160f81b0319821610156118db57600284019350611945565b600f60fc1b6001600160f81b0319821610156118fc57600384019350611945565b601f60fb1b6001600160f81b03198216101561191d57600484019350611945565b603f60fa1b6001600160f81b03198216101561193e57600584019350611945565b6006840193505b50600190910190611876565b509392505050565b600061073f825490565b603854826001600160401b0316101561199a576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119b390426126dc565b90506036548110156119db57604051635320bcf960e01b8152600481018390526024016107db565b806037541015611a015760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b611a1e8282610e59565b6107ee57611a2b81611c1d565b611a36836020611d89565b604051602001611500929190612d32565b611a518282610e59565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a893390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e52836001600160a01b038416611f24565b611aec8282610e59565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e52836001600160a01b038416611f73565b60005460ff166114665760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611bd19190612da7565b60006040518083038185875af1925050503d8060008114611c0e576040519150601f19603f3d011682016040523d82523d6000602084013e611c13565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d89565b606061073f82611c4284612066565b600101611d89565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c7a90869086908690600401612dc3565b6000604051808303816000875af1158015611c99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc19190810190612de6565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611cf0908690602001612ebd565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611d1c929190612ee5565b6020604051808303816000875af1158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612f09565b6000826000018281548110611d7657611d76612769565b9060005260206000200154905092915050565b60606000611d98836002612f22565b611da3906002612aff565b6001600160401b03811115611dba57611dba612396565b6040519080825280601f01601f191660200182016040528015611de4576020820181803683370190505b509050600360fc1b81600081518110611dff57611dff612769565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e2e57611e2e612769565b60200101906001600160f81b031916908160001a9053506000611e52846002612f22565b611e5d906001612aff565b90505b6001811115611ed5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e9157611e91612769565b1a60f81b828281518110611ea757611ea7612769565b60200101906001600160f81b031916908160001a90535060049490941c93611ece81612f39565b9050611e60565b508315610e525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b6000818152600183016020526040812054801561205c576000611f976001836126dc565b8554909150600090611fab906001906126dc565b9050818114612010576000866000018281548110611fcb57611fcb612769565b9060005260206000200154905080876000018481548110611fee57611fee612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202157612021612f50565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561207e5760809290921c916010015b604083901c156120935760409290921c916008015b602083901c156120a85760209290921c916004015b601083901c156120bd5760109290921c916002015b600883901c1561073f5760010192915050565b6000602082840312156120e257600080fd5b81356001600160e01b031981168114610e5257600080fd5b60006020828403121561210c57600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b6000806040838503121561213b57600080fd5b82359150602083013561214d81612113565b809150509250929050565b60006020828403121561216a57600080fd5b8135610e5281612113565b6001600160401b038116811461081257600080fd5b60008060006040848603121561219f57600080fd5b83356001600160401b03808211156121b657600080fd5b818601915086601f8301126121ca57600080fd5b8135818111156121d957600080fd5b8760208285010111156121eb57600080fd5b6020928301955093505084013561220181612175565b809150509250925092565b6000806000806000806000806000806101408b8d03121561222c57600080fd5b8a3561223781612113565b995060208b013561224781612113565b985060408b013561225781612113565b975060608b0135965060808b0135955060a08b0135945060c08b013561227c81612113565b935060e08b013561228c81612113565b92506101008b013561229d81612113565b91506101208b01356122ae81612113565b809150509295989b9194979a5092959850565b60008083601f8401126122d357600080fd5b5081356001600160401b038111156122ea57600080fd5b6020830191508360208260051b850101111561172e57600080fd5b801515811461081257600080fd5b60008060008060006060868803121561232b57600080fd5b85356001600160401b038082111561234257600080fd5b61234e89838a016122c1565b9097509550602088013591508082111561236757600080fd5b50612374888289016122c1565b909450925050604086013561238881612305565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123ce576123ce612396565b60405290565b604051606081016001600160401b03811182821017156123ce576123ce612396565b604051601f8201601f191681016001600160401b038111828210171561241e5761241e612396565b604052919050565b60006001600160401b0382111561243f5761243f612396565b50601f01601f191660200190565b600082601f83011261245e57600080fd5b813561247161246c82612426565b6123f6565b81815284602083860101111561248657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156124be57600080fd5b87356001600160401b03808211156124d557600080fd5b6124e18b838c0161244d565b985060208a013591506124f382612113565b90965060408901359061250582612175565b90955060608901359061251782612113565b9094506080890135908082111561252d57600080fd5b5061253a8a828b016122c1565b90945092505060a088013561254e81612305565b8091505092959891949750929550565b6000806040838503121561257157600080fd5b50508035926020909101359150565b60006020828403121561259257600080fd5b81356001600160401b038111156125a857600080fd5b6125b48482850161244d565b949350505050565b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f18582860161244d565b925050602083013561214d81612175565b60008060008060008060008060e0898b03121561261e57600080fd5b88356001600160401b038082111561263557600080fd5b6126418c838d0161244d565b995060208b0135915061265382612113565b90975060408a01359061266582612175565b90965060608a0135955060808a01359061267e82612113565b90945060a08a0135908082111561269457600080fd5b506126a18b828c016122c1565b90945092505060c08901356126b581612305565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f6126c6565b60006020828403121561270157600080fd5b8151610e5281612175565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061274960608301868861270c565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561279f57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127fc5783356127df81612113565b6001600160a01b03168152928101926001929092019181016127cc565b8615156040870152935061280f92505050565b9695505050505050565b60005b8381101561283457818101518382015260200161281c565b50506000910152565b60008151808452612855816020860160208601612819565b601f01601f19169290920160200192915050565b602081526000610e52602083018461283d565b600061288a61246c84612426565b905082815283838301111561289e57600080fd5b610e52836020830184612819565b6000608082840312156128be57600080fd5b604051608081018181106001600160401b03821117156128e0576128e0612396565b806040525080915082516128f381612113565b8152602083015161290381612113565b6020820152604083015161291681612175565b6040820152606083015161292981612305565b6060919091015292915050565b6000602080838503121561294957600080fd5b82516001600160401b038082111561296057600080fd5b9084019060a0828703121561297457600080fd5b61297c6123ac565b82518281111561298b57600080fd5b83016060818903121561299d57600080fd5b6129a56123d4565b815160ff811681146129b657600080fd5b815281860151868201526040820151848111156129d257600080fd5b82019350601f840189136129e557600080fd5b6129f389855188870161287c565b6040820152825250612a07878486016128ac565b848201528094505050505092915050565b608081526000612a2b608083018761283d565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a6457600080fd5b8151610e5281612305565b604081526000612a82604083018561283d565b90506001600160401b03831660208301529392505050565b600060408284031215612aac57600080fd5b612ab46123ac565b9050815181526020820151602082015292915050565b60008060808385031215612add57600080fd5b612ae78484612a9a565b9150612af68460408501612a9a565b90509250929050565b8082018082111561073f5761073f6126c6565b81835260006020808501808196508560051b810191508460005b87811015612b965782840389528135601e19883603018112612b4d57600080fd5b870185810190356001600160401b03811115612b6857600080fd5b803603821315612b7757600080fd5b612b8286828461270c565b9a87019a9550505090840190600101612b2c565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612bec9083018587612b12565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612c4e81602a850160208801612819565b660103b30b63ab2960cd1b602a918401918201528351612c75816031840160208801612819565b01603101949350505050565b85815260a060208201526000612c9a60a083018761283d565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612cdf57600080fd5b8251612cea81612175565b6020939093015192949293505050565b608081526000612d0d608083018761283d565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d6a816017850160208801612819565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d9b816028840160208801612819565b01602801949350505050565b60008251612db9818460208701612819565b9190910192915050565b838152604060208201526000612ddd604083018486612b12565b95945050505050565b60006020808385031215612df957600080fd5b82516001600160401b0380821115612e1057600080fd5b818501915085601f830112612e2457600080fd5b815181811115612e3657612e36612396565b8060051b612e458582016123f6565b9182528381018501918581019089841115612e5f57600080fd5b86860192505b83831015612eb057825185811115612e7d5760008081fd5b8601603f81018b13612e8f5760008081fd5b612ea08b898301516040840161287c565b8352509186019190860190612e65565b9998505050505050505050565b60008251612ecf818460208701612819565b63173937b760e11b920191825250600401919050565b6001600160a01b03831681526040602082018190526000906125b49083018461283d565b600060208284031215612f1b57600080fd5b5051919050565b808202811582820484141761073f5761073f6126c6565b600081612f4857612f486126c6565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203a109c3a44f7a0139823c421a40975bf8029ef66d689d4458e4d45cf8a5dbf8264736f6c63430008150033", + "nonce": "0x2f7a3", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "function": "upgrade(address,address)", + "arguments": [ + "0x512699B52ac2dC2b2aD505d9f29DcDad078FA799", + "0xcE19C5041734c825EE8A4476dC070c4f72BbbbfA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "gas": "0x12b56", + "value": "0x0", + "input": "0x99a88ec4000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799000000000000000000000000ce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "nonce": "0x2f7a4", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionType": "CREATE", + "contractName": "RNSCommission", + "contractAddress": "0xea29df2c7120f1a579785e65db9fd3372f851acb", + "function": null, + "arguments": null, + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x321ebc", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611c46806100ec6000396000f3fe6080604052600436106100ec5760003560e01c806391cbc73f1161008a578063c42ef38c11610059578063c42ef38c14610297578063ca15c873146102cb578063d547741f146102eb578063e92108b51461030b57600080fd5b806391cbc73f1461022257806391d14854146102425780639fd50e5814610262578063a217fddf1461028257600080fd5b806336568abe116100c657806336568abe146101945780634c255c97146101b45780635dc30fe5146101ca5780639010d07c146101ea57600080fd5b806301ffc9a714610100578063248a9ca3146101355780632f2ff15d1461017457600080fd5b366100fb576100f961032d565b005b600080fd5b34801561010c57600080fd5b5061012061011b366004611324565b610367565b60405190151581526020015b60405180910390f35b34801561014157600080fd5b5061016661015036600461134e565b6000908152600160208190526040909120015490565b60405190815260200161012c565b34801561018057600080fd5b506100f961018f36600461137c565b610392565b3480156101a057600080fd5b506100f96101af36600461137c565b6103bd565b3480156101c057600080fd5b5061016661271081565b3480156101d657600080fd5b506100f96101e53660046113f8565b610440565b3480156101f657600080fd5b5061020a61020536600461143a565b610455565b6040516001600160a01b03909116815260200161012c565b34801561022e57600080fd5b506100f961023d36600461145c565b610474565b34801561024e57600080fd5b5061012061025d36600461137c565b610605565b34801561026e57600080fd5b506100f961027d3660046114df565b610630565b34801561028e57600080fd5b50610166600081565b3480156102a357600080fd5b506101667f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf281565b3480156102d757600080fd5b506101666102e636600461134e565b61074e565b3480156102f757600080fd5b506100f961030636600461137c565b610765565b34801561031757600080fd5b5061032061078b565b60405161012c91906115b8565b6103577f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf233610605565b15610365576103653461089c565b565b60006001600160e01b03198216635a05180f60e01b148061038c575061038c82610a9d565b92915050565b600082815260016020819052604090912001546103ae81610ad2565b6103b88383610adf565b505050565b6001600160a01b03811633146104325760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61043c8282610b01565b5050565b600061044b81610ad2565b6103b88383610b23565b600082815260026020526040812061046d9083610ca6565b9392505050565b600054610100900460ff16158080156104945750600054600160ff909116105b806104ae5750303b1580156104ae575060005460ff166001145b6105115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610429565b6000805460ff191660011790558015610534576000805461ff0019166101001790555b61053f600087610cb2565b8160005b818110156105ab5761059b7f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf286868481811061058157610581611640565b90506020020160208101906105969190611656565b610cb2565b6105a481611689565b9050610543565b506105b68686610b23565b5080156105fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061063b81610ad2565b603554851061065d57604051634ec4810560e11b815260040160405180910390fd5b6001600160a01b0384166106845760405163e99d5ac560e01b815260040160405180910390fd5b836035868154811061069857610698611640565b906000526020600020906003020160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508282603587815481106106e2576106e2611640565b90600052602060002090600302016002019182610700929190611738565b5084336001600160a01b03167faa3076bb2e00a425a96ce6aa8762a984fe8ed14922e3fba98cfa90683cb05ff886868660405161073f93929190611822565b60405180910390a35050505050565b600081815260026020526040812061038c90610cbc565b6000828152600160208190526040909120015461078181610ad2565b6103b88383610b01565b60606035805480602002602001604051908101604052809291908181526020016000905b82821015610893576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191610802906116b8565b80601f016020809104026020016040519081016040528092919081815260200182805461082e906116b8565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081525050815260200190600101906107af565b50505050905090565b806000036108bd576040516370bf851360e11b815260040160405180910390fd5b60355460008190036108e257604051634ec4810560e11b815260040160405180910390fd5b60006108ef600183611850565b90506000805b828110156109e457600061092d866035848154811061091657610916611640565b906000526020600020906003020160010154610cc6565b90506109398184611863565b92506109716035838154811061095157610951611640565b60009182526020909120600390910201546001600160a01b031682610cdf565b6035828154811061098457610984611640565b6000918252602091829020600390910201546040518381526001600160a01b03909116917fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af910160405180910390a2506109dd81611689565b90506108f5565b5083811015610a9757610a2c60358381548110610a0357610a03611640565b60009182526020909120600390910201546001600160a01b0316610a278387611850565b610cdf565b60358281548110610a3f57610a3f611640565b60009182526020909120600390910201546001600160a01b03167fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af610a848387611850565b6040519081526020015b60405180910390a25b50505050565b60006001600160e01b03198216637965db0b60e01b148061038c57506301ffc9a760e01b6001600160e01b031983161461038c565b610adc8133610d44565b50565b610ae98282610d77565b60008281526002602052604090206103b89082610de2565b610b0b8282610df7565b60008281526002602052604090206103b89082610e5e565b806000819003610b4657604051634ec4810560e11b815260040160405180910390fd5b610b5260356000611284565b6000805b82811015610c48576000858583818110610b7257610b72611640565b9050602002810190610b849190611876565b610b92906020810190611656565b6001600160a01b031603610bb95760405163e99d5ac560e01b815260040160405180910390fd5b848482818110610bcb57610bcb611640565b9050602002810190610bdd9190611876565b610beb906020013583611863565b91506035858583818110610c0157610c01611640565b9050602002810190610c139190611876565b815460018101835560009283526020909220909160030201610c358282611896565b505080610c4190611689565b9050610b56565b506127108114610c6b5760405163648564d360e01b815260040160405180910390fd5b336001600160a01b03167f28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c008585604051610a8e9291906119c0565b600061046d8383610e73565b61043c8282610adf565b600061038c825490565b6000612710610cd58385611a92565b61046d9190611aa9565b6000610ceb8383610e9d565b9050806103b857610d04836001600160a01b0316610f13565b610d0d83610f29565b604051602001610d1e929190611acb565b60408051601f198184030181529082905262461bcd60e51b825261042991600401611b49565b610d4e8282610605565b61043c57610d5b81610f13565b610d66836020610f3c565b604051602001610d1e929190611b5c565b610d818282610605565b61043c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600061046d836001600160a01b0384166110d8565b610e018282610605565b1561043c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061046d836001600160a01b038416611127565b6000826000018281548110610e8a57610e8a611640565b9060005260206000200154905092915050565b604080516000808252602082019092526001600160a01b038416908390604051610ec79190611bd1565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5090949350505050565b606061038c6001600160a01b0383166014610f3c565b606061038c82610f388461121a565b6001015b60606000610f4b836002611a92565b610f56906002611863565b67ffffffffffffffff811115610f6e57610f6e6116a2565b6040519080825280601f01601f191660200182016040528015610f98576020820181803683370190505b509050600360fc1b81600081518110610fb357610fb3611640565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610fe257610fe2611640565b60200101906001600160f81b031916908160001a9053506000611006846002611a92565b611011906001611863565b90505b6001811115611089576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061104557611045611640565b1a60f81b82828151811061105b5761105b611640565b60200101906001600160f81b031916908160001a90535060049490941c9361108281611be3565b9050611014565b50831561046d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610429565b600081815260018301602052604081205461111f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561038c565b50600061038c565b6000818152600183016020526040812054801561121057600061114b600183611850565b855490915060009061115f90600190611850565b90508181146111c457600086600001828154811061117f5761117f611640565b90600052602060002001549050808760000184815481106111a2576111a2611640565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806111d5576111d5611bfa565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061038c565b600091505061038c565b600080608083901c156112325760809290921c916010015b604083901c156112475760409290921c916008015b602083901c1561125c5760209290921c916004015b601083901c156112715760109290921c916002015b600883901c1561038c5760010192915050565b5080546000825560030290600052602060002090810190610adc91905b808211156112d65780546001600160a01b03191681556000600182018190556112cd60028301826112da565b506003016112a1565b5090565b5080546112e6906116b8565b6000825580601f106112f6575050565b601f016020900490600052602060002090810190610adc91905b808211156112d65760008155600101611310565b60006020828403121561133657600080fd5b81356001600160e01b03198116811461046d57600080fd5b60006020828403121561136057600080fd5b5035919050565b6001600160a01b0381168114610adc57600080fd5b6000806040838503121561138f57600080fd5b8235915060208301356113a181611367565b809150509250929050565b60008083601f8401126113be57600080fd5b50813567ffffffffffffffff8111156113d657600080fd5b6020830191508360208260051b85010111156113f157600080fd5b9250929050565b6000806020838503121561140b57600080fd5b823567ffffffffffffffff81111561142257600080fd5b61142e858286016113ac565b90969095509350505050565b6000806040838503121561144d57600080fd5b50508035926020909101359150565b60008060008060006060868803121561147457600080fd5b853561147f81611367565b9450602086013567ffffffffffffffff8082111561149c57600080fd5b6114a889838a016113ac565b909650945060408801359150808211156114c157600080fd5b506114ce888289016113ac565b969995985093965092949392505050565b600080600080606085870312156114f557600080fd5b84359350602085013561150781611367565b9250604085013567ffffffffffffffff8082111561152457600080fd5b818701915087601f83011261153857600080fd5b81358181111561154757600080fd5b88602082850101111561155957600080fd5b95989497505060200194505050565b60005b8381101561158357818101518382015260200161156b565b50506000910152565b600081518084526115a4816020860160208601611568565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561163257888303603f19018552815180516001600160a01b031684528781015188850152860151606087850181905261161e8186018361158c565b9689019694505050908601906001016115df565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561166857600080fd5b813561046d81611367565b634e487b7160e01b600052601160045260246000fd5b60006001820161169b5761169b611673565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806116cc57607f821691505b6020821081036116ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103b857600081815260208120601f850160051c810160208610156117195750805b601f850160051c820191505b818110156105fd57828155600101611725565b67ffffffffffffffff831115611750576117506116a2565b6117648361175e83546116b8565b836116f2565b6000601f84116001811461179857600085156117805750838201355b600019600387901b1c1916600186901b1783556117f2565b600083815260209020601f19861690835b828110156117c957868501358255602094850194600190920191016117a9565b50868210156117e65760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061184790830184866117f9565b95945050505050565b8181038181111561038c5761038c611673565b8082018082111561038c5761038c611673565b60008235605e1983360301811261188c57600080fd5b9190910192915050565b81356118a181611367565b81546001600160a01b0319166001600160a01b03919091161781556020828101356001838101919091559060028301604085013536869003601e190181126118e857600080fd5b8501803567ffffffffffffffff81111561190157600080fd5b803603848301131561191257600080fd5b6119268161192085546116b8565b856116f2565b6000601f82116001811461195c576000831561194457508382018601355b600019600385901b1c1916600184901b1785556119b5565b600085815260209020601f19841690835b8281101561198c5786850189013582559388019390890190880161196d565b50848210156119ab5760001960f88660031b161c198885880101351681555b50508683881b0185555b505050505050505050565b60208082528181018390526000906040808401600586901b8501820187855b8881101561163257878303603f190184528135368b9003605e19018112611a0557600080fd5b8a0160608135611a1481611367565b6001600160a01b0316855281880135888601528682013536839003601e19018112611a3e57600080fd5b90910187810191903567ffffffffffffffff811115611a5c57600080fd5b803603831315611a6b57600080fd5b8188870152611a7d82870182856117f9565b968901969550505091860191506001016119df565b808202811582820484141761038c5761038c611673565b600082611ac657634e487b7160e01b600052601260045260246000fd5b500490565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351611b1681602a850160208801611568565b660103b30b63ab2960cd1b602a918401918201528351611b3d816031840160208801611568565b01603101949350505050565b60208152600061046d602083018461158c565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611b94816017850160208801611568565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611bc5816028840160208801611568565b01602801949350505050565b6000825161188c818460208701611568565b600081611bf257611bf2611673565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208d51978c729b6a9c0e0ecd5b61562f366dfd09974e656890ad9d58de84f6745264736f6c63430008150033", + "nonce": "0x2f7a5", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionType": "CREATE", + "contractName": "TransparentProxyOZv4_9_5", + "contractAddress": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "function": null, + "arguments": [ + "0xea29DF2C7120F1A579785E65db9fD3372F851aCB", + "0x505d91E8fd2091794b45b27f86C045529fa92CD7", + "0x91cbc73f000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "gas": "0x1f7438", + "value": "0x0", + "input": "0x608060405260405162000e4038038062000e4083398101604081905262000026916200042a565b8282828281620000398282600062000053565b506200004790508262000085565b5050505050506200055d565b6200005e83620000f7565b6000825111806200006c5750805b1562000080576200007e838362000139565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c760008051602062000df9833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000f48162000168565b50565b620001028162000206565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000161838360405180606001604052806027815260200162000e19602791396200029d565b9392505050565b6001600160a01b038116620001d35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000df98339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b620002755760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001ca565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001e5565b6060600080856001600160a01b031685604051620002bc91906200050a565b600060405180830381855af49150503d8060008114620002f9576040519150601f19603f3d011682016040523d82523d6000602084013e620002fe565b606091505b50909250905062000312868383876200031c565b9695505050505050565b606083156200039057825160000362000388576001600160a01b0385163b620003885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001ca565b50816200039c565b6200039c8383620003a4565b949350505050565b815115620003b55781518083602001fd5b8060405162461bcd60e51b8152600401620001ca919062000528565b80516001600160a01b0381168114620003e957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200042157818101518382015260200162000407565b50506000910152565b6000806000606084860312156200044057600080fd5b6200044b84620003d1565b92506200045b60208501620003d1565b60408501519092506001600160401b03808211156200047957600080fd5b818601915086601f8301126200048e57600080fd5b815181811115620004a357620004a3620003ee565b604051601f8201601f19908116603f01168101908382118183101715620004ce57620004ce620003ee565b81604052828152896020848701011115620004e857600080fd5b620004fb83602083016020880162000404565b80955050505050509250925092565b600082516200051e81846020870162000404565b9190910192915050565b60208152600082518060208401526200054981604085016020870162000404565b601f01601f19169190910160400192915050565b61088c806200056d6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f610169565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a5761005361019c565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a576100536101f3565b63070d7c6960e41b6001600160e01b031982160161009a57610053610239565b621eb96f60e61b6001600160e01b03198216016100b95761005361026a565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102aa565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102be565b565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a66102ce565b60006101b53660048184610683565b8101906101c291906106c9565b90506101df816040518060200160405280600081525060006102d9565b505060408051602081019091526000815290565b60606000806102053660048184610683565b81019061021291906106fa565b91509150610222828260016102d9565b604051806020016040528060008152509250505090565b60606102436102ce565b60006102523660048184610683565b81019061025f91906106c9565b90506101df81610305565b60606102746102ce565b600061027e610169565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102b46102ce565b600061027e61035c565b6101676102c961035c565b61036b565b341561016757600080fd5b6102e28361038f565b6000825111806102ef5750805b15610300576102fe83836103cf565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e610169565b604080516001600160a01b03928316815291841660208301520160405180910390a1610359816103fb565b50565b60006103666104a4565b905090565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b610398816104cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606103f4838360405180606001604052806027815260200161083060279139610560565b9392505050565b6001600160a01b0381166104605760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018d565b6001600160a01b0381163b6105395760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610483565b6060600080856001600160a01b03168560405161057d91906107e0565b600060405180830381855af49150503d80600081146105b8576040519150601f19603f3d011682016040523d82523d6000602084013e6105bd565b606091505b50915091506105ce868383876105d8565b9695505050505050565b60608315610647578251600003610640576001600160a01b0385163b6106405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b5081610651565b6106518383610659565b949350505050565b8151156106695781518083602001fd5b8060405162461bcd60e51b815260040161014e91906107fc565b6000808585111561069357600080fd5b838611156106a057600080fd5b5050820193919092039150565b80356001600160a01b03811681146106c457600080fd5b919050565b6000602082840312156106db57600080fd5b6103f4826106ad565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561070d57600080fd5b610716836106ad565b9150602083013567ffffffffffffffff8082111561073357600080fd5b818501915085601f83011261074757600080fd5b813581811115610759576107596106e4565b604051601f8201601f19908116603f01168101908382118183101715610781576107816106e4565b8160405282815288602084870101111561079a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107d75781810151838201526020016107bf565b50506000910152565b600082516107f28184602087016107bc565b9190910192915050565b602081526000825180602084015261081b8160408501602087016107bc565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a207c78ed3af0a4f57ce2b6c2fd644d6f8debc43e54eebfade2164eaf01f76a464736f6c63430008150033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000ea29df2c7120f1a579785e65db9fd3372f851acb000000000000000000000000505d91e8fd2091794b45b27f86c045529fa92cd70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000026491cbc73f000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa79900000000000000000000000000000000000000000000000000000000", + "nonce": "0x2f7a6", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "function": "setTreasury(address)", + "arguments": [ + "0x8998B6EB8F3742404b25586B2F9E1082b8Afb2CA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "gas": "0x10e50", + "value": "0x0", + "input": "0xf0f442600000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "nonce": "0x2f7a7", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xb962edded164f55d136e491a3022246815e1b5a8", + "function": "setTreasury(address)", + "arguments": [ + "0x8998B6EB8F3742404b25586B2F9E1082b8Afb2CA" + ], + "transaction": { + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0xb962edded164f55d136e491a3022246815e1b5a8", + "gas": "0x11e9a", + "value": "0x0", + "input": "0xf0f442600000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "nonce": "0x2f7a8", + "chainId": "0x7e5" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x29d133", + "logs": [ + { + "address": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000004000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xbceea3e9c73baf4d583edd7daedce2902a574a0c304c7361d7ef6c52a439e5bc", + "transactionIndex": "0x0", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x29d133", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0xce19c5041734c825ee8a4476dc070c4f72bbbbfa" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2a69c5", + "logs": [ + { + "address": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ce19c5041734c825ee8a4476dc070c4f72bbbbfa" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000002000000000002000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000020000000000000000000000000000000000000400000000000008000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x9a7f225864ea4682b6a8ee05ff21214a1d1b13d54982874da61dc364d96deb5c", + "transactionIndex": "0x1", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x9892", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4378bf", + "logs": [ + { + "address": "0xea29df2c7120f1a579785e65db9fd3372f851acb", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x1c91307a1f063259bbeae4a6f36cb7df0ed522628ca4968f30fb71a82f8e35e8", + "transactionIndex": "0x2", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x190efa", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0xea29df2c7120f1a579785e65db9fd3372f851acb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x537be7", + "logs": [ + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ea29df2c7120f1a579785e65db9fd3372f851acb" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf2", + "0x000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf2", + "0x000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c00", + "0x000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000505d91e8fd2091794b45b27f86c045529fa92cd7", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000400000000000000000000000400000000000000000000000000000002000000000000000000000000000000000000084001200000000000000000000000002000000000000080000000000000000000000000000020000000000000400000800000000800000000000000000000080000000000000000000000000800000000000000000000280000004000000800000000000000000000000004000000400080000080800000000001000000000000000000020000000000000000000040004000000000400000100000000000020000000000000000000000000000000000500000000000000020000000000000010", + "type": "0x0", + "transactionHash": "0xcf4d189484f9379958bdee43dfdf5282931eb0d82e81f0837d1cfae51ce27a5d", + "transactionIndex": "0x3", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x100328", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": null, + "contractAddress": "0x8998b6eb8f3742404b25586b2f9e1082b8afb2ca" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x540ea4", + "logs": [ + { + "address": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "topics": [ + "0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1", + "0x0000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000004000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008000000000000000000000000000000000000000000000000100000000", + "type": "0x0", + "transactionHash": "0xeae6740fd8fe135f06bfbc58eed47787aadbcc2db6f01e599c74a61436d80d8e", + "transactionIndex": "0x4", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x92bd", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0x512699b52ac2dc2b2ad505d9f29dcdad078fa799", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x54a18d", + "logs": [ + { + "address": "0xb962edded164f55d136e491a3022246815e1b5a8", + "topics": [ + "0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1", + "0x0000000000000000000000008998b6eb8f3742404b25586b2f9e1082b8afb2ca" + ], + "data": "0x", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "transactionHash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionIndex": "0x5", + "logIndex": "0xb", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000010000000000000000000000000000000004000000000000000000000000000000002000000400000000000000000000000000000000000000000000000000000000000000000000000000000000008000000200000000000000000000000000000000000000000100000000", + "type": "0x0", + "transactionHash": "0x2ac6bd88cafe04d9152e4c6620cecb27cceae130d882ac9c77d727f75bf598ac", + "transactionIndex": "0x5", + "blockHash": "0xa96832fea109d8ebe4c26e6423a884af74d1fdc3b380bd1a2eb7368fc4a66717", + "blockNumber": "0x1b338f4", + "gasUsed": "0x92e9", + "effectiveGasPrice": "0x4a817c800", + "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", + "to": "0xb962edded164f55d136e491a3022246815e1b5a8", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1719309944, + "chain": 2021, + "commit": "4bb6a99" +} \ No newline at end of file diff --git a/debug.sh b/debug.sh index fb3f8f8e..968eeb4d 100755 --- a/debug.sh +++ b/debug.sh @@ -1 +1 @@ -source lib/foundry-deployment-kit/debug.sh \ No newline at end of file +source dependencies/@fdk-0.3.0-beta/debug.sh diff --git a/deployments/ronin-testnet/RNSCommissionLogic.json b/deployments/ronin-testnet/RNSCommissionLogic.json new file mode 100644 index 00000000..bc10b95d --- /dev/null +++ b/deployments/ronin-testnet/RNSCommissionLogic.json @@ -0,0 +1,858 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_PERCENTAGE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SENDER_ROLE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCommissions", + "inputs": [], + "outputs": [ + { + "name": "commissionInfos", + "type": "tuple[]", + "internalType": "struct INSCommission.Commission[]", + "components": [ + { + "name": "recipient", + "type": "address", + "internalType": "address payable" + }, + { + "name": "ratio", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRoleAdmin", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRoleMember", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRoleMemberCount", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "grantRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "hasRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "admin", + "type": "address", + "internalType": "address" + }, + { + "name": "commissionInfos", + "type": "tuple[]", + "internalType": "struct INSCommission.Commission[]", + "components": [ + { + "name": "recipient", + "type": "address", + "internalType": "address payable" + }, + { + "name": "ratio", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + } + ] + }, + { + "name": "allowedSenders", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "revokeRole", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setCommissionInfo", + "inputs": [ + { + "name": "commissionIdx", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newRecipient", + "type": "address", + "internalType": "address payable" + }, + { + "name": "newName", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setCommissions", + "inputs": [ + { + "name": "commissionInfos", + "type": "tuple[]", + "internalType": "struct INSCommission.Commission[]", + "components": [ + { + "name": "recipient", + "type": "address", + "internalType": "address payable" + }, + { + "name": "ratio", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "CommissionInfoUpdated", + "inputs": [ + { + "name": "updatedBy", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "commissionIdx", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "newRecipient", + "type": "address", + "indexed": false, + "internalType": "address payable" + }, + { + "name": "newName", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CommissionsUpdated", + "inputs": [ + { + "name": "updatedBy", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "commissionInfos", + "type": "tuple[]", + "indexed": false, + "internalType": "struct INSCommission.Commission[]", + "components": [ + { + "name": "recipient", + "type": "address", + "internalType": "address payable" + }, + { + "name": "ratio", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Distributed", + "inputs": [ + { + "name": "recipient", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "commissionAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleGranted", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ + { + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InvalidAmountOfRON", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidArrayLength", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidRatio", + "inputs": [] + }, + { + "type": "error", + "name": "NullAddress", + "inputs": [] + } + ], + "absolutePath": "RNSCommission.sol", + "address": "0xea29DF2C7120F1A579785E65db9fD3372F851aCB", + "ast": "", + "blockNumber": 28522728, + "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611c46806100ec6000396000f3fe6080604052600436106100ec5760003560e01c806391cbc73f1161008a578063c42ef38c11610059578063c42ef38c14610297578063ca15c873146102cb578063d547741f146102eb578063e92108b51461030b57600080fd5b806391cbc73f1461022257806391d14854146102425780639fd50e5814610262578063a217fddf1461028257600080fd5b806336568abe116100c657806336568abe146101945780634c255c97146101b45780635dc30fe5146101ca5780639010d07c146101ea57600080fd5b806301ffc9a714610100578063248a9ca3146101355780632f2ff15d1461017457600080fd5b366100fb576100f961032d565b005b600080fd5b34801561010c57600080fd5b5061012061011b366004611324565b610367565b60405190151581526020015b60405180910390f35b34801561014157600080fd5b5061016661015036600461134e565b6000908152600160208190526040909120015490565b60405190815260200161012c565b34801561018057600080fd5b506100f961018f36600461137c565b610392565b3480156101a057600080fd5b506100f96101af36600461137c565b6103bd565b3480156101c057600080fd5b5061016661271081565b3480156101d657600080fd5b506100f96101e53660046113f8565b610440565b3480156101f657600080fd5b5061020a61020536600461143a565b610455565b6040516001600160a01b03909116815260200161012c565b34801561022e57600080fd5b506100f961023d36600461145c565b610474565b34801561024e57600080fd5b5061012061025d36600461137c565b610605565b34801561026e57600080fd5b506100f961027d3660046114df565b610630565b34801561028e57600080fd5b50610166600081565b3480156102a357600080fd5b506101667f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf281565b3480156102d757600080fd5b506101666102e636600461134e565b61074e565b3480156102f757600080fd5b506100f961030636600461137c565b610765565b34801561031757600080fd5b5061032061078b565b60405161012c91906115b8565b6103577f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf233610605565b15610365576103653461089c565b565b60006001600160e01b03198216635a05180f60e01b148061038c575061038c82610a9d565b92915050565b600082815260016020819052604090912001546103ae81610ad2565b6103b88383610adf565b505050565b6001600160a01b03811633146104325760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61043c8282610b01565b5050565b600061044b81610ad2565b6103b88383610b23565b600082815260026020526040812061046d9083610ca6565b9392505050565b600054610100900460ff16158080156104945750600054600160ff909116105b806104ae5750303b1580156104ae575060005460ff166001145b6105115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610429565b6000805460ff191660011790558015610534576000805461ff0019166101001790555b61053f600087610cb2565b8160005b818110156105ab5761059b7f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf286868481811061058157610581611640565b90506020020160208101906105969190611656565b610cb2565b6105a481611689565b9050610543565b506105b68686610b23565b5080156105fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061063b81610ad2565b603554851061065d57604051634ec4810560e11b815260040160405180910390fd5b6001600160a01b0384166106845760405163e99d5ac560e01b815260040160405180910390fd5b836035868154811061069857610698611640565b906000526020600020906003020160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508282603587815481106106e2576106e2611640565b90600052602060002090600302016002019182610700929190611738565b5084336001600160a01b03167faa3076bb2e00a425a96ce6aa8762a984fe8ed14922e3fba98cfa90683cb05ff886868660405161073f93929190611822565b60405180910390a35050505050565b600081815260026020526040812061038c90610cbc565b6000828152600160208190526040909120015461078181610ad2565b6103b88383610b01565b60606035805480602002602001604051908101604052809291908181526020016000905b82821015610893576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191610802906116b8565b80601f016020809104026020016040519081016040528092919081815260200182805461082e906116b8565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081525050815260200190600101906107af565b50505050905090565b806000036108bd576040516370bf851360e11b815260040160405180910390fd5b60355460008190036108e257604051634ec4810560e11b815260040160405180910390fd5b60006108ef600183611850565b90506000805b828110156109e457600061092d866035848154811061091657610916611640565b906000526020600020906003020160010154610cc6565b90506109398184611863565b92506109716035838154811061095157610951611640565b60009182526020909120600390910201546001600160a01b031682610cdf565b6035828154811061098457610984611640565b6000918252602091829020600390910201546040518381526001600160a01b03909116917fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af910160405180910390a2506109dd81611689565b90506108f5565b5083811015610a9757610a2c60358381548110610a0357610a03611640565b60009182526020909120600390910201546001600160a01b0316610a278387611850565b610cdf565b60358281548110610a3f57610a3f611640565b60009182526020909120600390910201546001600160a01b03167fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af610a848387611850565b6040519081526020015b60405180910390a25b50505050565b60006001600160e01b03198216637965db0b60e01b148061038c57506301ffc9a760e01b6001600160e01b031983161461038c565b610adc8133610d44565b50565b610ae98282610d77565b60008281526002602052604090206103b89082610de2565b610b0b8282610df7565b60008281526002602052604090206103b89082610e5e565b806000819003610b4657604051634ec4810560e11b815260040160405180910390fd5b610b5260356000611284565b6000805b82811015610c48576000858583818110610b7257610b72611640565b9050602002810190610b849190611876565b610b92906020810190611656565b6001600160a01b031603610bb95760405163e99d5ac560e01b815260040160405180910390fd5b848482818110610bcb57610bcb611640565b9050602002810190610bdd9190611876565b610beb906020013583611863565b91506035858583818110610c0157610c01611640565b9050602002810190610c139190611876565b815460018101835560009283526020909220909160030201610c358282611896565b505080610c4190611689565b9050610b56565b506127108114610c6b5760405163648564d360e01b815260040160405180910390fd5b336001600160a01b03167f28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c008585604051610a8e9291906119c0565b600061046d8383610e73565b61043c8282610adf565b600061038c825490565b6000612710610cd58385611a92565b61046d9190611aa9565b6000610ceb8383610e9d565b9050806103b857610d04836001600160a01b0316610f13565b610d0d83610f29565b604051602001610d1e929190611acb565b60408051601f198184030181529082905262461bcd60e51b825261042991600401611b49565b610d4e8282610605565b61043c57610d5b81610f13565b610d66836020610f3c565b604051602001610d1e929190611b5c565b610d818282610605565b61043c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600061046d836001600160a01b0384166110d8565b610e018282610605565b1561043c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061046d836001600160a01b038416611127565b6000826000018281548110610e8a57610e8a611640565b9060005260206000200154905092915050565b604080516000808252602082019092526001600160a01b038416908390604051610ec79190611bd1565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5090949350505050565b606061038c6001600160a01b0383166014610f3c565b606061038c82610f388461121a565b6001015b60606000610f4b836002611a92565b610f56906002611863565b67ffffffffffffffff811115610f6e57610f6e6116a2565b6040519080825280601f01601f191660200182016040528015610f98576020820181803683370190505b509050600360fc1b81600081518110610fb357610fb3611640565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610fe257610fe2611640565b60200101906001600160f81b031916908160001a9053506000611006846002611a92565b611011906001611863565b90505b6001811115611089576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061104557611045611640565b1a60f81b82828151811061105b5761105b611640565b60200101906001600160f81b031916908160001a90535060049490941c9361108281611be3565b9050611014565b50831561046d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610429565b600081815260018301602052604081205461111f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561038c565b50600061038c565b6000818152600183016020526040812054801561121057600061114b600183611850565b855490915060009061115f90600190611850565b90508181146111c457600086600001828154811061117f5761117f611640565b90600052602060002001549050808760000184815481106111a2576111a2611640565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806111d5576111d5611bfa565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061038c565b600091505061038c565b600080608083901c156112325760809290921c916010015b604083901c156112475760409290921c916008015b602083901c1561125c5760209290921c916004015b601083901c156112715760109290921c916002015b600883901c1561038c5760010192915050565b5080546000825560030290600052602060002090810190610adc91905b808211156112d65780546001600160a01b03191681556000600182018190556112cd60028301826112da565b506003016112a1565b5090565b5080546112e6906116b8565b6000825580601f106112f6575050565b601f016020900490600052602060002090810190610adc91905b808211156112d65760008155600101611310565b60006020828403121561133657600080fd5b81356001600160e01b03198116811461046d57600080fd5b60006020828403121561136057600080fd5b5035919050565b6001600160a01b0381168114610adc57600080fd5b6000806040838503121561138f57600080fd5b8235915060208301356113a181611367565b809150509250929050565b60008083601f8401126113be57600080fd5b50813567ffffffffffffffff8111156113d657600080fd5b6020830191508360208260051b85010111156113f157600080fd5b9250929050565b6000806020838503121561140b57600080fd5b823567ffffffffffffffff81111561142257600080fd5b61142e858286016113ac565b90969095509350505050565b6000806040838503121561144d57600080fd5b50508035926020909101359150565b60008060008060006060868803121561147457600080fd5b853561147f81611367565b9450602086013567ffffffffffffffff8082111561149c57600080fd5b6114a889838a016113ac565b909650945060408801359150808211156114c157600080fd5b506114ce888289016113ac565b969995985093965092949392505050565b600080600080606085870312156114f557600080fd5b84359350602085013561150781611367565b9250604085013567ffffffffffffffff8082111561152457600080fd5b818701915087601f83011261153857600080fd5b81358181111561154757600080fd5b88602082850101111561155957600080fd5b95989497505060200194505050565b60005b8381101561158357818101518382015260200161156b565b50506000910152565b600081518084526115a4816020860160208601611568565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561163257888303603f19018552815180516001600160a01b031684528781015188850152860151606087850181905261161e8186018361158c565b9689019694505050908601906001016115df565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561166857600080fd5b813561046d81611367565b634e487b7160e01b600052601160045260246000fd5b60006001820161169b5761169b611673565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806116cc57607f821691505b6020821081036116ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103b857600081815260208120601f850160051c810160208610156117195750805b601f850160051c820191505b818110156105fd57828155600101611725565b67ffffffffffffffff831115611750576117506116a2565b6117648361175e83546116b8565b836116f2565b6000601f84116001811461179857600085156117805750838201355b600019600387901b1c1916600186901b1783556117f2565b600083815260209020601f19861690835b828110156117c957868501358255602094850194600190920191016117a9565b50868210156117e65760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061184790830184866117f9565b95945050505050565b8181038181111561038c5761038c611673565b8082018082111561038c5761038c611673565b60008235605e1983360301811261188c57600080fd5b9190910192915050565b81356118a181611367565b81546001600160a01b0319166001600160a01b03919091161781556020828101356001838101919091559060028301604085013536869003601e190181126118e857600080fd5b8501803567ffffffffffffffff81111561190157600080fd5b803603848301131561191257600080fd5b6119268161192085546116b8565b856116f2565b6000601f82116001811461195c576000831561194457508382018601355b600019600385901b1c1916600184901b1785556119b5565b600085815260209020601f19841690835b8281101561198c5786850189013582559388019390890190880161196d565b50848210156119ab5760001960f88660031b161c198885880101351681555b50508683881b0185555b505050505050505050565b60208082528181018390526000906040808401600586901b8501820187855b8881101561163257878303603f190184528135368b9003605e19018112611a0557600080fd5b8a0160608135611a1481611367565b6001600160a01b0316855281880135888601528682013536839003601e19018112611a3e57600080fd5b90910187810191903567ffffffffffffffff811115611a5c57600080fd5b803603831315611a6b57600080fd5b8188870152611a7d82870182856117f9565b968901969550505091860191506001016119df565b808202811582820484141761038c5761038c611673565b600082611ac657634e487b7160e01b600052601260045260246000fd5b500490565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351611b1681602a850160208801611568565b660103b30b63ab2960cd1b602a918401918201528351611b3d816031840160208801611568565b01603101949350505050565b60208152600061046d602083018461158c565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611b94816017850160208801611568565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611bc5816028840160208801611568565b01602801949350505050565b6000825161188c818460208701611568565b600081611bf257611bf2611673565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208d51978c729b6a9c0e0ecd5b61562f366dfd09974e656890ad9d58de84f6745264736f6c63430008150033", + "callValue": 0, + "chainId": 2021, + "constructorArgs": "0x", + "contractName": "RNSCommission", + "deployedBytecode": "0x6080604052600436106100ec5760003560e01c806391cbc73f1161008a578063c42ef38c11610059578063c42ef38c14610297578063ca15c873146102cb578063d547741f146102eb578063e92108b51461030b57600080fd5b806391cbc73f1461022257806391d14854146102425780639fd50e5814610262578063a217fddf1461028257600080fd5b806336568abe116100c657806336568abe146101945780634c255c97146101b45780635dc30fe5146101ca5780639010d07c146101ea57600080fd5b806301ffc9a714610100578063248a9ca3146101355780632f2ff15d1461017457600080fd5b366100fb576100f961032d565b005b600080fd5b34801561010c57600080fd5b5061012061011b366004611324565b610367565b60405190151581526020015b60405180910390f35b34801561014157600080fd5b5061016661015036600461134e565b6000908152600160208190526040909120015490565b60405190815260200161012c565b34801561018057600080fd5b506100f961018f36600461137c565b610392565b3480156101a057600080fd5b506100f96101af36600461137c565b6103bd565b3480156101c057600080fd5b5061016661271081565b3480156101d657600080fd5b506100f96101e53660046113f8565b610440565b3480156101f657600080fd5b5061020a61020536600461143a565b610455565b6040516001600160a01b03909116815260200161012c565b34801561022e57600080fd5b506100f961023d36600461145c565b610474565b34801561024e57600080fd5b5061012061025d36600461137c565b610605565b34801561026e57600080fd5b506100f961027d3660046114df565b610630565b34801561028e57600080fd5b50610166600081565b3480156102a357600080fd5b506101667f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf281565b3480156102d757600080fd5b506101666102e636600461134e565b61074e565b3480156102f757600080fd5b506100f961030636600461137c565b610765565b34801561031757600080fd5b5061032061078b565b60405161012c91906115b8565b6103577f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf233610605565b15610365576103653461089c565b565b60006001600160e01b03198216635a05180f60e01b148061038c575061038c82610a9d565b92915050565b600082815260016020819052604090912001546103ae81610ad2565b6103b88383610adf565b505050565b6001600160a01b03811633146104325760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61043c8282610b01565b5050565b600061044b81610ad2565b6103b88383610b23565b600082815260026020526040812061046d9083610ca6565b9392505050565b600054610100900460ff16158080156104945750600054600160ff909116105b806104ae5750303b1580156104ae575060005460ff166001145b6105115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610429565b6000805460ff191660011790558015610534576000805461ff0019166101001790555b61053f600087610cb2565b8160005b818110156105ab5761059b7f76d12de99ad2ca162840505be9b657c2e7a650cc3ee0284048f3f9def3c1adf286868481811061058157610581611640565b90506020020160208101906105969190611656565b610cb2565b6105a481611689565b9050610543565b506105b68686610b23565b5080156105fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600061063b81610ad2565b603554851061065d57604051634ec4810560e11b815260040160405180910390fd5b6001600160a01b0384166106845760405163e99d5ac560e01b815260040160405180910390fd5b836035868154811061069857610698611640565b906000526020600020906003020160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508282603587815481106106e2576106e2611640565b90600052602060002090600302016002019182610700929190611738565b5084336001600160a01b03167faa3076bb2e00a425a96ce6aa8762a984fe8ed14922e3fba98cfa90683cb05ff886868660405161073f93929190611822565b60405180910390a35050505050565b600081815260026020526040812061038c90610cbc565b6000828152600160208190526040909120015461078181610ad2565b6103b88383610b01565b60606035805480602002602001604051908101604052809291908181526020016000905b82821015610893576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191610802906116b8565b80601f016020809104026020016040519081016040528092919081815260200182805461082e906116b8565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b505050505081525050815260200190600101906107af565b50505050905090565b806000036108bd576040516370bf851360e11b815260040160405180910390fd5b60355460008190036108e257604051634ec4810560e11b815260040160405180910390fd5b60006108ef600183611850565b90506000805b828110156109e457600061092d866035848154811061091657610916611640565b906000526020600020906003020160010154610cc6565b90506109398184611863565b92506109716035838154811061095157610951611640565b60009182526020909120600390910201546001600160a01b031682610cdf565b6035828154811061098457610984611640565b6000918252602091829020600390910201546040518381526001600160a01b03909116917fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af910160405180910390a2506109dd81611689565b90506108f5565b5083811015610a9757610a2c60358381548110610a0357610a03611640565b60009182526020909120600390910201546001600160a01b0316610a278387611850565b610cdf565b60358281548110610a3f57610a3f611640565b60009182526020909120600390910201546001600160a01b03167fb649c98f58055c520df0dcb5709eff2e931217ff2fb1e21376130d31bbb1c0af610a848387611850565b6040519081526020015b60405180910390a25b50505050565b60006001600160e01b03198216637965db0b60e01b148061038c57506301ffc9a760e01b6001600160e01b031983161461038c565b610adc8133610d44565b50565b610ae98282610d77565b60008281526002602052604090206103b89082610de2565b610b0b8282610df7565b60008281526002602052604090206103b89082610e5e565b806000819003610b4657604051634ec4810560e11b815260040160405180910390fd5b610b5260356000611284565b6000805b82811015610c48576000858583818110610b7257610b72611640565b9050602002810190610b849190611876565b610b92906020810190611656565b6001600160a01b031603610bb95760405163e99d5ac560e01b815260040160405180910390fd5b848482818110610bcb57610bcb611640565b9050602002810190610bdd9190611876565b610beb906020013583611863565b91506035858583818110610c0157610c01611640565b9050602002810190610c139190611876565b815460018101835560009283526020909220909160030201610c358282611896565b505080610c4190611689565b9050610b56565b506127108114610c6b5760405163648564d360e01b815260040160405180910390fd5b336001600160a01b03167f28d7f0d68cf2a192abb8ce94479d236f99759d18e31ee7cbfb0a473764374c008585604051610a8e9291906119c0565b600061046d8383610e73565b61043c8282610adf565b600061038c825490565b6000612710610cd58385611a92565b61046d9190611aa9565b6000610ceb8383610e9d565b9050806103b857610d04836001600160a01b0316610f13565b610d0d83610f29565b604051602001610d1e929190611acb565b60408051601f198184030181529082905262461bcd60e51b825261042991600401611b49565b610d4e8282610605565b61043c57610d5b81610f13565b610d66836020610f3c565b604051602001610d1e929190611b5c565b610d818282610605565b61043c5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600061046d836001600160a01b0384166110d8565b610e018282610605565b1561043c5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061046d836001600160a01b038416611127565b6000826000018281548110610e8a57610e8a611640565b9060005260206000200154905092915050565b604080516000808252602082019092526001600160a01b038416908390604051610ec79190611bd1565b60006040518083038185875af1925050503d8060008114610f04576040519150601f19603f3d011682016040523d82523d6000602084013e610f09565b606091505b5090949350505050565b606061038c6001600160a01b0383166014610f3c565b606061038c82610f388461121a565b6001015b60606000610f4b836002611a92565b610f56906002611863565b67ffffffffffffffff811115610f6e57610f6e6116a2565b6040519080825280601f01601f191660200182016040528015610f98576020820181803683370190505b509050600360fc1b81600081518110610fb357610fb3611640565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610fe257610fe2611640565b60200101906001600160f81b031916908160001a9053506000611006846002611a92565b611011906001611863565b90505b6001811115611089576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061104557611045611640565b1a60f81b82828151811061105b5761105b611640565b60200101906001600160f81b031916908160001a90535060049490941c9361108281611be3565b9050611014565b50831561046d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610429565b600081815260018301602052604081205461111f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561038c565b50600061038c565b6000818152600183016020526040812054801561121057600061114b600183611850565b855490915060009061115f90600190611850565b90508181146111c457600086600001828154811061117f5761117f611640565b90600052602060002001549050808760000184815481106111a2576111a2611640565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806111d5576111d5611bfa565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061038c565b600091505061038c565b600080608083901c156112325760809290921c916010015b604083901c156112475760409290921c916008015b602083901c1561125c5760209290921c916004015b601083901c156112715760109290921c916002015b600883901c1561038c5760010192915050565b5080546000825560030290600052602060002090810190610adc91905b808211156112d65780546001600160a01b03191681556000600182018190556112cd60028301826112da565b506003016112a1565b5090565b5080546112e6906116b8565b6000825580601f106112f6575050565b601f016020900490600052602060002090810190610adc91905b808211156112d65760008155600101611310565b60006020828403121561133657600080fd5b81356001600160e01b03198116811461046d57600080fd5b60006020828403121561136057600080fd5b5035919050565b6001600160a01b0381168114610adc57600080fd5b6000806040838503121561138f57600080fd5b8235915060208301356113a181611367565b809150509250929050565b60008083601f8401126113be57600080fd5b50813567ffffffffffffffff8111156113d657600080fd5b6020830191508360208260051b85010111156113f157600080fd5b9250929050565b6000806020838503121561140b57600080fd5b823567ffffffffffffffff81111561142257600080fd5b61142e858286016113ac565b90969095509350505050565b6000806040838503121561144d57600080fd5b50508035926020909101359150565b60008060008060006060868803121561147457600080fd5b853561147f81611367565b9450602086013567ffffffffffffffff8082111561149c57600080fd5b6114a889838a016113ac565b909650945060408801359150808211156114c157600080fd5b506114ce888289016113ac565b969995985093965092949392505050565b600080600080606085870312156114f557600080fd5b84359350602085013561150781611367565b9250604085013567ffffffffffffffff8082111561152457600080fd5b818701915087601f83011261153857600080fd5b81358181111561154757600080fd5b88602082850101111561155957600080fd5b95989497505060200194505050565b60005b8381101561158357818101518382015260200161156b565b50506000910152565b600081518084526115a4816020860160208601611568565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561163257888303603f19018552815180516001600160a01b031684528781015188850152860151606087850181905261161e8186018361158c565b9689019694505050908601906001016115df565b509098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561166857600080fd5b813561046d81611367565b634e487b7160e01b600052601160045260246000fd5b60006001820161169b5761169b611673565b5060010190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806116cc57607f821691505b6020821081036116ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103b857600081815260208120601f850160051c810160208610156117195750805b601f850160051c820191505b818110156105fd57828155600101611725565b67ffffffffffffffff831115611750576117506116a2565b6117648361175e83546116b8565b836116f2565b6000601f84116001811461179857600085156117805750838201355b600019600387901b1c1916600186901b1783556117f2565b600083815260209020601f19861690835b828110156117c957868501358255602094850194600190920191016117a9565b50868210156117e65760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061184790830184866117f9565b95945050505050565b8181038181111561038c5761038c611673565b8082018082111561038c5761038c611673565b60008235605e1983360301811261188c57600080fd5b9190910192915050565b81356118a181611367565b81546001600160a01b0319166001600160a01b03919091161781556020828101356001838101919091559060028301604085013536869003601e190181126118e857600080fd5b8501803567ffffffffffffffff81111561190157600080fd5b803603848301131561191257600080fd5b6119268161192085546116b8565b856116f2565b6000601f82116001811461195c576000831561194457508382018601355b600019600385901b1c1916600184901b1785556119b5565b600085815260209020601f19841690835b8281101561198c5786850189013582559388019390890190880161196d565b50848210156119ab5760001960f88660031b161c198885880101351681555b50508683881b0185555b505050505050505050565b60208082528181018390526000906040808401600586901b8501820187855b8881101561163257878303603f190184528135368b9003605e19018112611a0557600080fd5b8a0160608135611a1481611367565b6001600160a01b0316855281880135888601528682013536839003601e19018112611a3e57600080fd5b90910187810191903567ffffffffffffffff811115611a5c57600080fd5b803603831315611a6b57600080fd5b8188870152611a7d82870182856117f9565b968901969550505091860191506001016119df565b808202811582820484141761038c5761038c611673565b600082611ac657634e487b7160e01b600052601260045260246000fd5b500490565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351611b1681602a850160208801611568565b660103b30b63ab2960cd1b602a918401918201528351611b3d816031840160208801611568565b01603101949350505050565b60208152600061046d602083018461158c565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611b94816017850160208801611568565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611bc5816028840160208801611568565b01602801949350505050565b6000825161188c818460208701611568565b600081611bf257611bf2611673565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212208d51978c729b6a9c0e0ecd5b61562f366dfd09974e656890ad9d58de84f6745264736f6c63430008150033", + "deployer": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", + "devdoc": { + "version": 1, + "kind": "dev", + "methods": { + "getCommissions()": { + "details": "Returns commissions information." + }, + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event." + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event." + }, + "revokeRole(bytes32,address)": { + "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event." + }, + "setCommissionInfo(uint256,address,string)": { + "details": "Sets for specific commission information based on the `commissionIdx`. Requirements: - The method caller is setter role. Emits the event `CommissionInfoUpdated`." + }, + "setCommissions((address,uint256,string)[])": { + "details": "Sets all commission information Requirements: - The method caller is setter role. - The total ratio must be equal to 100%. Emits the event `CommissionsUpdated`." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "events": { + "CommissionInfoUpdated(address,uint256,address,string)": { + "details": "Emitted when specific commission info is updated." + }, + "CommissionsUpdated(address,(address,uint256,string)[])": { + "details": "Emitted when all the commission info is updated." + }, + "Distributed(address,uint256)": { + "details": "Emitted when transfer RON to commission's recipient." + }, + "Initialized(uint8)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "RoleAdminChanged(bytes32,bytes32,bytes32)": { + "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._" + }, + "RoleGranted(bytes32,address,address)": { + "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." + }, + "RoleRevoked(bytes32,address,address)": { + "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" + } + }, + "errors": { + "InvalidAmountOfRON()": [ + { + "details": "Revert when amount of RON is invalid" + } + ], + "InvalidArrayLength()": [ + { + "details": "Revert when index is out of range" + } + ], + "InvalidRatio()": [ + { + "details": "Revert when ratio is invalid" + } + ], + "NullAddress()": [ + { + "details": "Revert when recipient address is null" + } + ] + } + }, + "isFoundry": true, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidAmountOfRON\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NullAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"updatedBy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"commissionIdx\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"newRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"CommissionInfoUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"updatedBy\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct INSCommission.Commission[]\",\"name\":\"commissionInfos\",\"type\":\"tuple[]\"}],\"name\":\"CommissionsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"commissionAmount\",\"type\":\"uint256\"}],\"name\":\"Distributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SENDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommissions\",\"outputs\":[{\"components\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"struct INSCommission.Commission[]\",\"name\":\"commissionInfos\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"struct INSCommission.Commission[]\",\"name\":\"commissionInfos\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"allowedSenders\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commissionIdx\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"newRecipient\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"setCommissionInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"struct INSCommission.Commission[]\",\"name\":\"commissionInfos\",\"type\":\"tuple[]\"}],\"name\":\"setCommissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"InvalidAmountOfRON()\":[{\"details\":\"Revert when amount of RON is invalid\"}],\"InvalidArrayLength()\":[{\"details\":\"Revert when index is out of range\"}],\"InvalidRatio()\":[{\"details\":\"Revert when ratio is invalid\"}],\"NullAddress()\":[{\"details\":\"Revert when recipient address is null\"}]},\"events\":{\"CommissionInfoUpdated(address,uint256,address,string)\":{\"details\":\"Emitted when specific commission info is updated.\"},\"CommissionsUpdated(address,(address,uint256,string)[])\":{\"details\":\"Emitted when all the commission info is updated.\"},\"Distributed(address,uint256)\":{\"details\":\"Emitted when transfer RON to commission's recipient.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getCommissions()\":{\"details\":\"Returns commissions information.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setCommissionInfo(uint256,address,string)\":{\"details\":\"Sets for specific commission information based on the `commissionIdx`. Requirements: - The method caller is setter role. Emits the event `CommissionInfoUpdated`.\"},\"setCommissions((address,uint256,string)[])\":{\"details\":\"Sets all commission information Requirements: - The method caller is setter role. - The total ratio must be equal to 100%. Emits the event `CommissionsUpdated`.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Constant representing the maximum percentage value (100%).\"},\"SENDER_ROLE\":{\"details\":\"Role for accounts that can send RON for this contract.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_commissionInfos\":{\"details\":\"Array of `Commission` structs that store commissions information.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSCommission.sol\":\"RNSCommission\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk-0.3.0-beta/=dependencies/@fdk-0.3.0-beta/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin-contracts-4.9.3/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork-pyth-sdk-solidity-2.2.0/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"src/RNSCommission.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { INSCommission } from \\\"./interfaces/INSCommission.sol\\\";\\nimport { RONTransferHelper } from \\\"./libraries/transfers/RONTransferHelper.sol\\\";\\n\\ncontract RNSCommission is Initializable, AccessControlEnumerable, INSCommission {\\n /// @dev Constant representing the maximum percentage value (100%).\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n /// @dev Role for accounts that can send RON for this contract.\\n bytes32 public constant SENDER_ROLE = keccak256(\\\"SENDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n /// @dev Array of `Commission` structs that store commissions information.\\n Commission[] internal _commissionInfos;\\n\\n constructor() {\\n _disableInitializers();\\n }\\n\\n receive() external payable {\\n _fallback();\\n }\\n\\n function initialize(address admin, Commission[] calldata commissionInfos, address[] calldata allowedSenders)\\n external\\n initializer\\n {\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n\\n uint256 length = allowedSenders.length;\\n for (uint256 i; i < length; ++i) {\\n _setupRole(SENDER_ROLE, allowedSenders[i]);\\n }\\n\\n _setCommissions(commissionInfos);\\n }\\n\\n /// @inheritdoc INSCommission\\n function getCommissions() external view returns (Commission[] memory commissionInfos) {\\n return _commissionInfos;\\n }\\n\\n /// @inheritdoc INSCommission\\n function setCommissions(Commission[] calldata commissionInfos) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setCommissions(commissionInfos);\\n }\\n\\n /// @inheritdoc INSCommission\\n function setCommissionInfo(uint256 commissionIdx, address payable newRecipient, string calldata newName)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n if (commissionIdx >= _commissionInfos.length) revert InvalidArrayLength();\\n // TODO: should fix to not duplicate logic in set commision info\\n if (newRecipient == address(0)) revert NullAddress();\\n\\n _commissionInfos[commissionIdx].recipient = newRecipient;\\n _commissionInfos[commissionIdx].name = newName;\\n emit CommissionInfoUpdated(msg.sender, commissionIdx, newRecipient, newName);\\n }\\n\\n /**\\n * @dev Helper method to allocate commission and take fee into recipient address.\\n */\\n function _allocateCommissionAndTransferToRecipient(uint256 ronAmount) internal {\\n if (ronAmount == 0) revert InvalidAmountOfRON();\\n\\n uint256 length = _commissionInfos.length;\\n if (length == 0) revert InvalidArrayLength();\\n\\n uint256 lastIdx = length - 1;\\n uint256 sumValue;\\n\\n for (uint256 i; i < lastIdx; ++i) {\\n uint256 commissionAmount = _computePercentage(ronAmount, _commissionInfos[i].ratio);\\n sumValue += commissionAmount;\\n\\n RONTransferHelper.safeTransfer(_commissionInfos[i].recipient, commissionAmount);\\n emit Distributed(_commissionInfos[i].recipient, commissionAmount);\\n }\\n\\n // This code send the remaining RON to the last recipient.\\n if (sumValue < ronAmount) {\\n RONTransferHelper.safeTransfer(_commissionInfos[lastIdx].recipient, ronAmount - sumValue);\\n emit Distributed(_commissionInfos[lastIdx].recipient, ronAmount - sumValue);\\n }\\n }\\n\\n function _setCommissions(Commission[] calldata commissionInfos) internal {\\n uint256 length = commissionInfos.length;\\n // commissionInfos[] can not be empty\\n if (length == 0) revert InvalidArrayLength();\\n\\n delete _commissionInfos;\\n\\n uint256 sum;\\n\\n for (uint256 i; i < length; ++i) {\\n if (commissionInfos[i].recipient == address(0)) revert NullAddress();\\n\\n sum += commissionInfos[i].ratio;\\n _commissionInfos.push(commissionInfos[i]);\\n }\\n\\n if (sum != MAX_PERCENTAGE) revert InvalidRatio();\\n\\n emit CommissionsUpdated(msg.sender, commissionInfos);\\n }\\n\\n // Calculate amount of money based on commission's ratio\\n function _computePercentage(uint256 value, uint256 percentage) internal pure virtual returns (uint256) {\\n return (value * percentage) / MAX_PERCENTAGE;\\n }\\n\\n function _fallback() internal {\\n if (hasRole(SENDER_ROLE, msg.sender)) {\\n _allocateCommissionAndTransferToRecipient(msg.value);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xef2dc31d9a58007dc0a12cb027d4981bf57b5d0a0c465fbb511afe64cb64640c\",\"license\":\"MIT\"},\"src/interfaces/INSCommission.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ninterface INSCommission {\\n struct Commission {\\n address payable recipient;\\n uint256 ratio; // Values [0; 100_00] reflexes [0; 100%]\\n string name; // Commission's name\\n }\\n\\n /// @dev Emitted when all the commission info is updated.\\n event CommissionsUpdated(address indexed updatedBy, Commission[] commissionInfos);\\n /// @dev Emitted when specific commission info is updated.\\n event CommissionInfoUpdated(\\n address indexed updatedBy, uint256 indexed commissionIdx, address payable newRecipient, string newName\\n );\\n /// @dev Emitted when transfer RON to commission's recipient.\\n event Distributed(address indexed recipient, uint256 commissionAmount);\\n\\n /// @dev Revert when index is out of range\\n error InvalidArrayLength();\\n /// @dev Revert when ratio is invalid\\n error InvalidRatio();\\n /// @dev Revert when amount of RON is invalid\\n error InvalidAmountOfRON();\\n /// @dev Revert when recipient address is null\\n error NullAddress();\\n\\n /**\\n * @dev Maximum commission percentage.\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev Returns the sender role.\\n */\\n function SENDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns commissions information.\\n */\\n function getCommissions() external view returns (Commission[] memory commissionInfos);\\n\\n /**\\n * @dev Sets all commission information\\n *\\n * Requirements:\\n * - The method caller is setter role.\\n * - The total ratio must be equal to 100%.\\n * Emits the event `CommissionsUpdated`.\\n */\\n function setCommissions(Commission[] calldata commissionInfos) external;\\n\\n /**\\n * @dev Sets for specific commission information based on the `commissionIdx`.\\n *\\n * Requirements:\\n * - The method caller is setter role.\\n * Emits the event `CommissionInfoUpdated`.\\n */\\n function setCommissionInfo(uint256 commissionIdx, address payable newAddr, string calldata name) external;\\n}\\n\",\"keccak256\":\"0xb2c57076aabd1b2a189be0f936d9945fdce20e86f9698688af07e0abafd712f2\",\"license\":\"MIT\"},\"src/libraries/transfers/RONTransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Strings } from \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\n\\n/**\\n * @title RONTransferHelper\\n */\\nlibrary RONTransferHelper {\\n using Strings for *;\\n\\n /**\\n * @dev Transfers RON and wraps result for the method caller to a recipient.\\n */\\n function safeTransfer(address payable _to, uint256 _value) internal {\\n bool _success = send(_to, _value);\\n if (!_success) {\\n revert(\\n string.concat(\\\"TransferHelper: could not transfer RON to \\\", _to.toHexString(), \\\" value \\\", _value.toHexString())\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns whether the call was success.\\n * Note: this function should use with the `ReentrancyGuard`.\\n */\\n function send(address payable _to, uint256 _value) internal returns (bool _success) {\\n (_success,) = _to.call{ value: _value }(new bytes(0));\\n }\\n}\\n\",\"keccak256\":\"0x733e60374ee0a33d0da2ee24976b893ca6b6d9764243b175e1ac8025240394da\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 194469, + "storageLayout": { + "storage": [ + { + "astId": 60342, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8" + }, + { + "astId": 60345, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 58815, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_roles", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)" + }, + { + "astId": 59125, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_roleMembers", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)" + }, + { + "astId": 79107, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "____gap", + "offset": 0, + "slot": "3", + "type": "t_array(t_uint256)50_storage" + }, + { + "astId": 79112, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_commissionInfos", + "offset": 0, + "slot": "53", + "type": "t_array(t_struct(Commission)84580_storage)dyn_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_address_payable": { + "encoding": "inplace", + "label": "address payable", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32", + "base": "t_bytes32" + }, + "t_array(t_struct(Commission)84580_storage)dyn_storage": { + "encoding": "dynamic_array", + "label": "struct INSCommission.Commission[]", + "numberOfBytes": "32", + "base": "t_struct(Commission)84580_storage" + }, + "t_array(t_uint256)50_storage": { + "encoding": "inplace", + "label": "uint256[50]", + "numberOfBytes": "1600", + "base": "t_uint256" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct EnumerableSet.AddressSet)", + "numberOfBytes": "32", + "value": "t_struct(AddressSet)64694_storage" + }, + "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)58810_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressSet)64694_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.AddressSet", + "numberOfBytes": "64", + "members": [ + { + "astId": 64693, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)64379_storage" + } + ] + }, + "t_struct(Commission)84580_storage": { + "encoding": "inplace", + "label": "struct INSCommission.Commission", + "numberOfBytes": "96", + "members": [ + { + "astId": 84575, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "recipient", + "offset": 0, + "slot": "0", + "type": "t_address_payable" + }, + { + "astId": 84577, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "ratio", + "offset": 0, + "slot": "1", + "type": "t_uint256" + }, + { + "astId": 84579, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "name", + "offset": 0, + "slot": "2", + "type": "t_string_storage" + } + ] + }, + "t_struct(RoleData)58810_storage": { + "encoding": "inplace", + "label": "struct AccessControl.RoleData", + "numberOfBytes": "64", + "members": [ + { + "astId": 58807, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_bool)" + }, + { + "astId": 58809, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "adminRole", + "offset": 0, + "slot": "1", + "type": "t_bytes32" + } + ] + }, + "t_struct(Set)64379_storage": { + "encoding": "inplace", + "label": "struct EnumerableSet.Set", + "numberOfBytes": "64", + "members": [ + { + "astId": 64374, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 64378, + "contract": "src/RNSCommission.sol:RNSCommission", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "encoding": "inplace", + "label": "uint8", + "numberOfBytes": "1" + } + } + }, + "timestamp": 1719309904, + "userdoc": { + "version": 1, + "kind": "user" + } +} \ No newline at end of file diff --git a/deployments/ronin-testnet/RNSCommissionProxy.json b/deployments/ronin-testnet/RNSCommissionProxy.json new file mode 100644 index 00000000..1737f9e0 --- /dev/null +++ b/deployments/ronin-testnet/RNSCommissionProxy.json @@ -0,0 +1,128 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "logic", + "type": "address", + "internalType": "address" + }, + { + "name": "admin", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "payable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AdminChanged", + "inputs": [ + { + "name": "previousAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newAdmin", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "BeaconUpgraded", + "inputs": [ + { + "name": "beacon", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } + ], + "absolutePath": "TransparentProxyOZv4_9_5.sol:TransparentProxyOZv4_9_5", + "address": "0x8998B6EB8F3742404b25586B2F9E1082b8Afb2CA", + "ast": "", + "blockNumber": 28522728, + "bytecode": "0x608060405260405162000e4038038062000e4083398101604081905262000026916200042a565b8282828281620000398282600062000053565b506200004790508262000085565b5050505050506200055d565b6200005e83620000f7565b6000825111806200006c5750805b1562000080576200007e838362000139565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c760008051602062000df9833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000f48162000168565b50565b620001028162000206565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000161838360405180606001604052806027815260200162000e19602791396200029d565b9392505050565b6001600160a01b038116620001d35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000df98339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b620002755760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001ca565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001e5565b6060600080856001600160a01b031685604051620002bc91906200050a565b600060405180830381855af49150503d8060008114620002f9576040519150601f19603f3d011682016040523d82523d6000602084013e620002fe565b606091505b50909250905062000312868383876200031c565b9695505050505050565b606083156200039057825160000362000388576001600160a01b0385163b620003885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001ca565b50816200039c565b6200039c8383620003a4565b949350505050565b815115620003b55781518083602001fd5b8060405162461bcd60e51b8152600401620001ca919062000528565b80516001600160a01b0381168114620003e957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200042157818101518382015260200162000407565b50506000910152565b6000806000606084860312156200044057600080fd5b6200044b84620003d1565b92506200045b60208501620003d1565b60408501519092506001600160401b03808211156200047957600080fd5b818601915086601f8301126200048e57600080fd5b815181811115620004a357620004a3620003ee565b604051601f8201601f19908116603f01168101908382118183101715620004ce57620004ce620003ee565b81604052828152896020848701011115620004e857600080fd5b620004fb83602083016020880162000404565b80955050505050509250925092565b600082516200051e81846020870162000404565b9190910192915050565b60208152600082518060208401526200054981604085016020870162000404565b601f01601f19169190910160400192915050565b61088c806200056d6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f610169565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a5761005361019c565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a576100536101f3565b63070d7c6960e41b6001600160e01b031982160161009a57610053610239565b621eb96f60e61b6001600160e01b03198216016100b95761005361026a565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102aa565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102be565b565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a66102ce565b60006101b53660048184610683565b8101906101c291906106c9565b90506101df816040518060200160405280600081525060006102d9565b505060408051602081019091526000815290565b60606000806102053660048184610683565b81019061021291906106fa565b91509150610222828260016102d9565b604051806020016040528060008152509250505090565b60606102436102ce565b60006102523660048184610683565b81019061025f91906106c9565b90506101df81610305565b60606102746102ce565b600061027e610169565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102b46102ce565b600061027e61035c565b6101676102c961035c565b61036b565b341561016757600080fd5b6102e28361038f565b6000825111806102ef5750805b15610300576102fe83836103cf565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e610169565b604080516001600160a01b03928316815291841660208301520160405180910390a1610359816103fb565b50565b60006103666104a4565b905090565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b610398816104cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606103f4838360405180606001604052806027815260200161083060279139610560565b9392505050565b6001600160a01b0381166104605760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018d565b6001600160a01b0381163b6105395760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610483565b6060600080856001600160a01b03168560405161057d91906107e0565b600060405180830381855af49150503d80600081146105b8576040519150601f19603f3d011682016040523d82523d6000602084013e6105bd565b606091505b50915091506105ce868383876105d8565b9695505050505050565b60608315610647578251600003610640576001600160a01b0385163b6106405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b5081610651565b6106518383610659565b949350505050565b8151156106695781518083602001fd5b8060405162461bcd60e51b815260040161014e91906107fc565b6000808585111561069357600080fd5b838611156106a057600080fd5b5050820193919092039150565b80356001600160a01b03811681146106c457600080fd5b919050565b6000602082840312156106db57600080fd5b6103f4826106ad565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561070d57600080fd5b610716836106ad565b9150602083013567ffffffffffffffff8082111561073357600080fd5b818501915085601f83011261074757600080fd5b813581811115610759576107596106e4565b604051601f8201601f19908116603f01168101908382118183101715610781576107816106e4565b8160405282815288602084870101111561079a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107d75781810151838201526020016107bf565b50506000910152565b600082516107f28184602087016107bc565b9190910192915050565b602081526000825180602084015261081b8160408501602087016107bc565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a207c78ed3af0a4f57ce2b6c2fd644d6f8debc43e54eebfade2164eaf01f76a464736f6c63430008150033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "callValue": 0, + "chainId": 2021, + "constructorArgs": "0x000000000000000000000000ea29df2c7120f1a579785e65db9fd3372f851acb000000000000000000000000505d91e8fd2091794b45b27f86c045529fa92cd70000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000026491cbc73f000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c07000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000009536b79204d617669730000000000000000000000000000000000000000000000000000000000000000000000968d0cd7343f711216817e617d3f92a23dc91c070000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005526f6e696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b962edded164f55d136e491a3022246815e1b5a8000000000000000000000000512699b52ac2dc2b2ad505d9f29dcdad078fa79900000000000000000000000000000000000000000000000000000000", + "contractName": "TransparentProxyOZv4_9_5", + "deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b61001f610169565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a5761005361019c565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a576100536101f3565b63070d7c6960e41b6001600160e01b031982160161009a57610053610239565b621eb96f60e61b6001600160e01b03198216016100b95761005361026a565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102aa565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102be565b565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a66102ce565b60006101b53660048184610683565b8101906101c291906106c9565b90506101df816040518060200160405280600081525060006102d9565b505060408051602081019091526000815290565b60606000806102053660048184610683565b81019061021291906106fa565b91509150610222828260016102d9565b604051806020016040528060008152509250505090565b60606102436102ce565b60006102523660048184610683565b81019061025f91906106c9565b90506101df81610305565b60606102746102ce565b600061027e610169565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102b46102ce565b600061027e61035c565b6101676102c961035c565b61036b565b341561016757600080fd5b6102e28361038f565b6000825111806102ef5750805b15610300576102fe83836103cf565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e610169565b604080516001600160a01b03928316815291841660208301520160405180910390a1610359816103fb565b50565b60006103666104a4565b905090565b3660008037600080366000845af43d6000803e80801561038a573d6000f35b3d6000fd5b610398816104cc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606103f4838360405180606001604052806027815260200161083060279139610560565b9392505050565b6001600160a01b0381166104605760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018d565b6001600160a01b0381163b6105395760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610483565b6060600080856001600160a01b03168560405161057d91906107e0565b600060405180830381855af49150503d80600081146105b8576040519150601f19603f3d011682016040523d82523d6000602084013e6105bd565b606091505b50915091506105ce868383876105d8565b9695505050505050565b60608315610647578251600003610640576001600160a01b0385163b6106405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b5081610651565b6106518383610659565b949350505050565b8151156106695781518083602001fd5b8060405162461bcd60e51b815260040161014e91906107fc565b6000808585111561069357600080fd5b838611156106a057600080fd5b5050820193919092039150565b80356001600160a01b03811681146106c457600080fd5b919050565b6000602082840312156106db57600080fd5b6103f4826106ad565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561070d57600080fd5b610716836106ad565b9150602083013567ffffffffffffffff8082111561073357600080fd5b818501915085601f83011261074757600080fd5b813581811115610759576107596106e4565b604051601f8201601f19908116603f01168101908382118183101715610781576107816106e4565b8160405282815288602084870101111561079a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107d75781810151838201526020016107bf565b50506000910152565b600082516107f28184602087016107bc565b9190910192915050565b602081526000825180602084015261081b8160408501602087016107bc565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a207c78ed3af0a4f57ce2b6c2fd644d6f8debc43e54eebfade2164eaf01f76a464736f6c63430008150033", + "deployer": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", + "devdoc": { + "version": 1, + "kind": "dev", + "details": "A contract that acts as a proxy for transparent upgrades.", + "methods": { + "constructor": { + "details": "Initializes the Proxy contract.", + "params": { + "admin": "The address of the admin contract.", + "data": "The initialization data.", + "logic": "The address of the logic contract." + } + } + }, + "events": { + "AdminChanged(address,address)": { + "details": "Emitted when the admin account has changed." + }, + "BeaconUpgraded(address)": { + "details": "Emitted when the beacon is changed." + }, + "Upgraded(address)": { + "details": "Emitted when the implementation is upgraded." + } + }, + "title": "TransparentProxyOZv4_9_5" + }, + "isFoundry": true, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"A contract that acts as a proxy for transparent upgrades.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the Proxy contract.\",\"params\":{\"admin\":\"The address of the admin contract.\",\"data\":\"The initialization data.\",\"logic\":\"The address of the logic contract.\"}}},\"title\":\"TransparentProxyOZv4_9_5\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/@fdk-0.3.0-beta/src/TransparentProxyOZv4_9_5.sol\":\"TransparentProxyOZv4_9_5\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk-0.3.0-beta/=dependencies/@fdk-0.3.0-beta/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin-contracts-4.9.3/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork-pyth-sdk-solidity-2.2.0/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/\"]},\"sources\":{\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n *\\n * _Available since v4.8.3._\\n */\\ninterface IERC1967 {\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Emitted when the beacon is changed.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n}\\n\",\"keccak256\":\"0x3cbef5ebc24b415252e2f8c0c9254555d30d9f085603b4b80d9b5ed20ab87e90\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../interfaces/IERC1967.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract ERC1967Upgrade is IERC1967 {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(address newImplementation, bytes memory data, bool forceCall) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data, bool forceCall) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(address newBeacon, bytes memory data, bool forceCall) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b21ae06bf5957f73fa16754b0669c77b7abd8ba6c072d35c3281d446fdb86c2\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overridden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\\n * does not implement this interface directly, and some of its functions are implemented by an internal dispatch\\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\\n * include them in the ABI so this interface must be used to interact with it.\\n */\\ninterface ITransparentUpgradeableProxy is IERC1967 {\\n function admin() external view returns (address);\\n\\n function implementation() external view returns (address);\\n\\n function changeAdmin(address) external;\\n\\n function upgradeTo(address) external;\\n\\n function upgradeToAndCall(address, bytes memory) external payable;\\n}\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n *\\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\\n * inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch\\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\\n * implementation.\\n *\\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler\\n * will not check that there are no selector conflicts, due to the note above. A selector clash between any new function\\n * and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could\\n * render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n *\\n * CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the\\n * implementation provides a function with the same selector.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior\\n */\\n function _fallback() internal virtual override {\\n if (msg.sender == _getAdmin()) {\\n bytes memory ret;\\n bytes4 selector = msg.sig;\\n if (selector == ITransparentUpgradeableProxy.upgradeTo.selector) {\\n ret = _dispatchUpgradeTo();\\n } else if (selector == ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\\n ret = _dispatchUpgradeToAndCall();\\n } else if (selector == ITransparentUpgradeableProxy.changeAdmin.selector) {\\n ret = _dispatchChangeAdmin();\\n } else if (selector == ITransparentUpgradeableProxy.admin.selector) {\\n ret = _dispatchAdmin();\\n } else if (selector == ITransparentUpgradeableProxy.implementation.selector) {\\n ret = _dispatchImplementation();\\n } else {\\n revert(\\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n }\\n assembly {\\n return(add(ret, 0x20), mload(ret))\\n }\\n } else {\\n super._fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function _dispatchAdmin() private returns (bytes memory) {\\n _requireZeroValue();\\n\\n address admin = _getAdmin();\\n return abi.encode(admin);\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function _dispatchImplementation() private returns (bytes memory) {\\n _requireZeroValue();\\n\\n address implementation = _implementation();\\n return abi.encode(implementation);\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _dispatchChangeAdmin() private returns (bytes memory) {\\n _requireZeroValue();\\n\\n address newAdmin = abi.decode(msg.data[4:], (address));\\n _changeAdmin(newAdmin);\\n\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n */\\n function _dispatchUpgradeTo() private returns (bytes memory) {\\n _requireZeroValue();\\n\\n address newImplementation = abi.decode(msg.data[4:], (address));\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n */\\n function _dispatchUpgradeToAndCall() private returns (bytes memory) {\\n (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\\n _upgradeToAndCall(newImplementation, data, true);\\n\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to\\n * emulate some proxy functions being non-payable while still allowing value to pass through.\\n */\\n function _requireZeroValue() private {\\n require(msg.value == 0);\\n }\\n}\\n\",\"keccak256\":\"0x168e36d7e616bd41f6abab4a83009da64513ae9e638aa6d5980066e2a92db689\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/dependencies/@openzeppelin-contracts-4.9.3/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/StorageSlot.sol)\\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._\\n * _Available since v4.9 for `string`, `bytes`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n struct StringSlot {\\n string value;\\n }\\n\\n struct BytesSlot {\\n bytes value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\\n */\\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\\n */\\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\\n */\\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\\n */\\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := store.slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf09e68aa0dc6722a25bc46490e8d48ed864466d17313b8a0b254c36b54e49899\",\"license\":\"MIT\"},\"dependencies/@fdk-0.3.0-beta/src/TransparentProxyOZv4_9_5.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport {\\n ITransparentUpgradeableProxy,\\n TransparentUpgradeableProxy\\n} from \\\"../dependencies/@openzeppelin-contracts-4.9.3//proxy/transparent/TransparentUpgradeableProxy.sol\\\";\\n\\n/**\\n * @title TransparentProxyOZv4_9_5\\n * @dev A contract that acts as a proxy for transparent upgrades.\\n */\\ncontract TransparentProxyOZv4_9_5 is TransparentUpgradeableProxy {\\n /**\\n * @dev Initializes the Proxy contract.\\n * @param logic The address of the logic contract.\\n * @param admin The address of the admin contract.\\n * @param data The initialization data.\\n */\\n constructor(address logic, address admin, bytes memory data) payable TransparentUpgradeableProxy(logic, admin, data) { }\\n}\\n\",\"keccak256\":\"0x680e3c2fc0044a6c4f3771e851124702a668be855b4b8731a38a93efda94dec2\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 194470, + "storageLayout": { + "storage": [], + "types": {} + }, + "timestamp": 1719309904, + "userdoc": { + "version": 1, + "kind": "user" + } +} \ No newline at end of file diff --git a/deployments/ronin-testnet/RNSDomainPriceLogic.json b/deployments/ronin-testnet/RNSDomainPriceLogic.json index 1739684a..1dd5f909 100644 --- a/deployments/ronin-testnet/RNSDomainPriceLogic.json +++ b/deployments/ronin-testnet/RNSDomainPriceLogic.json @@ -99,23 +99,8 @@ }, { "name": "tiers", -<<<<<<< Updated upstream - "type": "uint256[]", - "internalType": "uint256[]" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "type": "uint256[]", - "internalType": "uint256[]" -======= "type": "uint8[]", "internalType": "enum INSDomainPrice.Tier[]" ->>>>>>> Stashed changes -======= - "type": "uint8[]", - "internalType": "enum INSDomainPrice.Tier[]" ->>>>>>> Stashed changes ->>>>>>> Stashed changes } ], "outputs": [], @@ -277,23 +262,8 @@ "outputs": [ { "name": "tier", -<<<<<<< Updated upstream - "type": "uint256", - "internalType": "uint256" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "type": "uint256", - "internalType": "uint256" -======= - "type": "uint8", - "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes -======= "type": "uint8", "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes ->>>>>>> Stashed changes } ], "stateMutability": "view" @@ -512,23 +482,8 @@ "outputs": [ { "name": "tier", -<<<<<<< Updated upstream - "type": "uint256", - "internalType": "uint256" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "type": "uint256", - "internalType": "uint256" -======= "type": "uint8", "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes -======= - "type": "uint8", - "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes ->>>>>>> Stashed changes } ], "stateMutability": "view" @@ -1080,27 +1035,9 @@ }, { "name": "tier", -<<<<<<< Updated upstream - "type": "uint256", - "indexed": true, - "internalType": "uint256" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "type": "uint256", - "indexed": true, - "internalType": "uint256" -======= "type": "uint8", "indexed": true, "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes -======= - "type": "uint8", - "indexed": true, - "internalType": "enum INSDomainPrice.Tier" ->>>>>>> Stashed changes ->>>>>>> Stashed changes } ], "anonymous": false @@ -1169,44885 +1106,89 @@ "inputs": [] } ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes + "absolutePath": "RNSDomainPrice.sol", "address": "0xc77EAbB5172037A1a82f4E6bb6813894121d8062", - "args": "0x", - "ast": { - "absolutePath": "src/RNSDomainPrice.sol", - "id": 87686, - "exportedSymbols": { - "AccessControlEnumerable": [ - 69333 - ], - "INSAuction": [ - 91351 - ], - "INSDomainPrice": [ - 91664 - ], - "INSUnified": [ - 92040 - ], - "IPyth": [ - 75202 - ], - "Initializable": [ - 70606 - ], - "LibPeriodScaler": [ - 93753 - ], - "LibRNSDomain": [ - 93107 - ], - "LibSafeRange": [ - 93651 - ], - "LibString": [ - 93389 - ], - "Math": [ - 73915 - ], - "PeriodScaler": [ - 93662 - ], - "PythConverter": [ - 94442 - ], - "PythStructs": [ - 75245 - ], - "RNSDomainPrice": [ - 87685 - ], - "TimestampWrapper": [ - 93585 - ] - }, - "nodeType": "SourceUnit", - "src": "32:15126:147", - "nodes": [ - { - "id": 86304, - "nodeType": "PragmaDirective", - "src": "32:24:147", -<<<<<<< Updated upstream -======= -======= - "address": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", - "args": "0x", - "ast": { - "absolutePath": "src/RNSDomainPrice.sol", - "id": 119627, - "exportedSymbols": { - "AccessControlEnumerable": [ - 100251 - ], - "INSAuction": [ - 123292 - ], - "INSDomainPrice": [ - 123609 - ], - "INSUnified": [ - 123985 - ], - "IPyth": [ - 106120 - ], - "Initializable": [ - 101524 - ], - "LibPeriodScaler": [ - 125698 - ], - "LibRNSDomain": [ - 125052 - ], - "LibSafeRange": [ - 125596 - ], - "LibString": [ - 125334 - ], - "Math": [ - 104833 - ], - "PeriodScaler": [ - 125607 - ], - "PythConverter": [ - 126387 - ], - "PythStructs": [ - 106163 - ], - "RNSDomainPrice": [ - 119626 - ], - "TimestampWrapper": [ - 125530 - ] - }, - "nodeType": "SourceUnit", - "src": "32:16050:163", - "nodes": [ - { - "id": 118219, - "nodeType": "PragmaDirective", - "src": "32:24:163", ->>>>>>> Stashed changes -======= - "address": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", - "args": "0x", - "ast": { - "absolutePath": "src/RNSDomainPrice.sol", - "id": 119627, - "exportedSymbols": { - "AccessControlEnumerable": [ - 100251 - ], - "INSAuction": [ - 123292 - ], - "INSDomainPrice": [ - 123609 - ], - "INSUnified": [ - 123985 - ], - "IPyth": [ - 106120 - ], - "Initializable": [ - 101524 - ], - "LibPeriodScaler": [ - 125698 - ], - "LibRNSDomain": [ - 125052 - ], - "LibSafeRange": [ - 125596 - ], - "LibString": [ - 125334 - ], - "Math": [ - 104833 - ], - "PeriodScaler": [ - 125607 - ], - "PythConverter": [ - 126387 - ], - "PythStructs": [ - 106163 - ], - "RNSDomainPrice": [ - 119626 - ], - "TimestampWrapper": [ - 125530 - ] - }, - "nodeType": "SourceUnit", - "src": "32:16050:163", - "nodes": [ - { - "id": 118219, - "nodeType": "PragmaDirective", - "src": "32:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".19" - ] + "ast": "", + "blockNumber": 28516662, + "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220a22162059b0382b55efe21704f538e8aee2a6b0cf84ef8ea034b86d4109e2d9e64736f6c63430008150033", + "callValue": 0, + "chainId": 2021, + "constructorArgs": "0x", + "contractName": "RNSDomainPrice", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220a22162059b0382b55efe21704f538e8aee2a6b0cf84ef8ea034b86d4109e2d9e64736f6c63430008150033", + "deployer": "0x000000000000000000000000000000000000dEaD", + "devdoc": { + "version": 1, + "kind": "dev", + "methods": { + "bulkOverrideRenewalFees(bytes32[],uint256[])": { + "details": "Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.", + "params": { + "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", + "usdPrices": "Array of prices in USD. Leave 2^256 - 1 to remove overriding." + } }, - { -<<<<<<< Updated upstream - "id": 86306, - "nodeType": "ImportDirective", - "src": "58:86:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86306, - "nodeType": "ImportDirective", - "src": "58:86:147", -======= - "id": 118221, - "nodeType": "ImportDirective", - "src": "58:86:163", ->>>>>>> Stashed changes -======= - "id": 118221, - "nodeType": "ImportDirective", - "src": "58:86:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", - "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 70607, - "symbolAliases": [ - { - "foreign": { - "id": 86305, - "name": "Initializable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 70606, - "src": "67:13:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 101525, - "symbolAliases": [ - { - "foreign": { - "id": 118220, - "name": "Initializable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101524, - "src": "67:13:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 101525, - "symbolAliases": [ - { - "foreign": { - "id": 118220, - "name": "Initializable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101524, - "src": "67:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "bulkOverrideTiers(bytes32[],uint8[])": { + "details": "Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.", + "params": { + "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", + "tiers": "Array of tiers. Leave 2^256 - 1 to remove overriding." + } }, - { -<<<<<<< Updated upstream - "id": 86308, - "nodeType": "ImportDirective", - "src": "145:101:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86308, - "nodeType": "ImportDirective", - "src": "145:101:147", -======= - "id": 118223, - "nodeType": "ImportDirective", - "src": "145:101:163", ->>>>>>> Stashed changes -======= - "id": 118223, - "nodeType": "ImportDirective", - "src": "145:101:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol", - "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 69334, - "symbolAliases": [ - { - "foreign": { - "id": 86307, - "name": "AccessControlEnumerable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69333, - "src": "154:23:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 100252, - "symbolAliases": [ - { - "foreign": { - "id": 118222, - "name": "AccessControlEnumerable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100251, - "src": "154:23:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 100252, - "symbolAliases": [ - { - "foreign": { - "id": 118222, - "name": "AccessControlEnumerable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100251, - "src": "154:23:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])": { + "details": "Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.", + "params": { + "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", + "proofHashes": "Array of proof hashes.", + "ronPrices": "Array of prices in (W)RON token.", + "setTypes": "Array of update types from the operator service." + } }, - { -<<<<<<< Updated upstream - "id": 86310, - "nodeType": "ImportDirective", - "src": "247:67:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86310, - "nodeType": "ImportDirective", - "src": "247:67:147", -======= - "id": 118225, - "nodeType": "ImportDirective", - "src": "247:67:163", ->>>>>>> Stashed changes -======= - "id": 118225, - "nodeType": "ImportDirective", - "src": "247:67:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", - "file": "@openzeppelin/contracts/utils/math/Math.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 73916, - "symbolAliases": [ - { - "foreign": { - "id": 86309, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "256:4:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 104834, - "symbolAliases": [ - { - "foreign": { - "id": 118224, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "256:4:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 104834, - "symbolAliases": [ - { - "foreign": { - "id": 118224, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "256:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])": { + "details": "Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.", + "params": { + "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", + "proofHashes": "Array of proof hashes.", + "ronPrices": "Array of prices in (W)RON token.", + "setTypes": "Array of update types from the operator service." + } }, - { -<<<<<<< Updated upstream - "id": 86313, - "nodeType": "ImportDirective", - "src": "315:60:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86313, - "nodeType": "ImportDirective", - "src": "315:60:147", -======= - "id": 118228, - "nodeType": "ImportDirective", - "src": "315:60:163", ->>>>>>> Stashed changes -======= - "id": 118228, - "nodeType": "ImportDirective", - "src": "315:60:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "lib/pyth-sdk-solidity/IPyth.sol", - "file": "@pythnetwork/IPyth.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 75203, - "symbolAliases": [ - { - "foreign": { - "id": 86311, - "name": "IPyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75202, - "src": "324:5:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 106121, - "symbolAliases": [ - { - "foreign": { - "id": 118226, - "name": "IPyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 106120, - "src": "324:5:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 106121, - "symbolAliases": [ - { - "foreign": { - "id": 118226, - "name": "IPyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 106120, - "src": "324:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86312, - "name": "PythStructs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75245, - "src": "331:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118227, - "name": "PythStructs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 106163, - "src": "331:11:163", ->>>>>>> Stashed changes -======= - "id": 118227, - "name": "PythStructs", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 106163, - "src": "331:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "convertRONToUSD(uint256)": { + "details": "Returns the converted amount from RON to USD." }, - { -<<<<<<< Updated upstream - "id": 86315, - "nodeType": "ImportDirective", - "src": "376:57:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86315, - "nodeType": "ImportDirective", - "src": "376:57:147", -======= - "id": 118230, - "nodeType": "ImportDirective", - "src": "376:57:163", ->>>>>>> Stashed changes -======= - "id": 118230, - "nodeType": "ImportDirective", - "src": "376:57:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/interfaces/INSUnified.sol", - "file": "./interfaces/INSUnified.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 92041, - "symbolAliases": [ - { - "foreign": { - "id": 86314, - "name": "INSUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 92040, - "src": "385:10:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 123986, - "symbolAliases": [ - { - "foreign": { - "id": 118229, - "name": "INSUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123985, - "src": "385:10:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 123986, - "symbolAliases": [ - { - "foreign": { - "id": 118229, - "name": "INSUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123985, - "src": "385:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "convertUSDToRON(uint256)": { + "details": "Returns the converted amount from USD to RON." }, - { -<<<<<<< Updated upstream - "id": 86317, - "nodeType": "ImportDirective", - "src": "434:57:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86317, - "nodeType": "ImportDirective", - "src": "434:57:147", -======= - "id": 118232, - "nodeType": "ImportDirective", - "src": "434:57:163", ->>>>>>> Stashed changes -======= - "id": 118232, - "nodeType": "ImportDirective", - "src": "434:57:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/interfaces/INSAuction.sol", - "file": "./interfaces/INSAuction.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 91352, - "symbolAliases": [ - { - "foreign": { - "id": 86316, - "name": "INSAuction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91351, - "src": "443:10:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 123293, - "symbolAliases": [ - { - "foreign": { - "id": 118231, - "name": "INSAuction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123292, - "src": "443:10:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 123293, - "symbolAliases": [ - { - "foreign": { - "id": 118231, - "name": "INSAuction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123292, - "src": "443:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getDomainPrice(string)": { + "details": "Return the domain price.", + "params": { + "label": "The domain label to register (Eg, 'foo' for 'foo.ron')." + } }, - { -<<<<<<< Updated upstream - "id": 86319, - "nodeType": "ImportDirective", - "src": "492:65:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86319, - "nodeType": "ImportDirective", - "src": "492:65:147", -======= - "id": 118234, - "nodeType": "ImportDirective", - "src": "492:65:163", ->>>>>>> Stashed changes -======= - "id": 118234, - "nodeType": "ImportDirective", - "src": "492:65:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/interfaces/INSDomainPrice.sol", - "file": "./interfaces/INSDomainPrice.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 91665, - "symbolAliases": [ - { - "foreign": { - "id": 86318, - "name": "INSDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91664, - "src": "501:14:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 123610, - "symbolAliases": [ - { - "foreign": { - "id": 118233, - "name": "INSDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123609, - "src": "501:14:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 123610, - "symbolAliases": [ - { - "foreign": { - "id": 118233, - "name": "INSDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123609, - "src": "501:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getOverriddenRenewalFee(string)": { + "details": "Returns the renewal fee of a label. Reverts if not overridden." }, - { -<<<<<<< Updated upstream - "id": 86323, - "nodeType": "ImportDirective", - "src": "558:94:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86323, - "nodeType": "ImportDirective", - "src": "558:94:147", -======= - "id": 118238, - "nodeType": "ImportDirective", - "src": "558:94:163", ->>>>>>> Stashed changes -======= - "id": 118238, - "nodeType": "ImportDirective", - "src": "558:94:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/math/PeriodScalingUtils.sol", - "file": "./libraries/math/PeriodScalingUtils.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 93754, - "symbolAliases": [ - { - "foreign": { - "id": 86320, - "name": "PeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93662, - "src": "567:12:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 125699, - "symbolAliases": [ - { - "foreign": { - "id": 118235, - "name": "PeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125607, - "src": "567:12:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 125699, - "symbolAliases": [ - { - "foreign": { - "id": 118235, - "name": "PeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125607, - "src": "567:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86321, - "name": "LibPeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93753, - "src": "581:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118236, - "name": "LibPeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125698, - "src": "581:15:163", ->>>>>>> Stashed changes -======= - "id": 118236, - "name": "LibPeriodScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125698, - "src": "581:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86322, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "598:4:147", -<<<<<<< Updated upstream -======= -======= - "id": 118237, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "598:4:163", ->>>>>>> Stashed changes -======= - "id": 118237, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "598:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getOverriddenTier(string)": { + "details": "Returns the tier of a label. Reverts if not overridden." }, - { -<<<<<<< Updated upstream - "id": 86325, - "nodeType": "ImportDirective", - "src": "653:73:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86325, - "nodeType": "ImportDirective", - "src": "653:73:147", -======= - "id": 118240, - "nodeType": "ImportDirective", - "src": "653:73:163", ->>>>>>> Stashed changes -======= - "id": 118240, - "nodeType": "ImportDirective", - "src": "653:73:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/TimestampWrapperUtils.sol", - "file": "./libraries/TimestampWrapperUtils.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 93586, - "symbolAliases": [ - { - "foreign": { - "id": 86324, - "name": "TimestampWrapper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93585, - "src": "662:16:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 125531, - "symbolAliases": [ - { - "foreign": { - "id": 118239, - "name": "TimestampWrapper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125530, - "src": "662:16:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 125531, - "symbolAliases": [ - { - "foreign": { - "id": 118239, - "name": "TimestampWrapper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125530, - "src": "662:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getPythOracleConfig()": { + "details": "Returns the Pyth oracle config." }, - { -<<<<<<< Updated upstream - "id": 86327, - "nodeType": "ImportDirective", - "src": "727:65:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86327, - "nodeType": "ImportDirective", - "src": "727:65:147", -======= - "id": 118242, - "nodeType": "ImportDirective", - "src": "727:65:163", ->>>>>>> Stashed changes -======= - "id": 118242, - "nodeType": "ImportDirective", - "src": "727:65:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/math/LibSafeRange.sol", - "file": "./libraries/math/LibSafeRange.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 93652, - "symbolAliases": [ - { - "foreign": { - "id": 86326, - "name": "LibSafeRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93651, - "src": "736:12:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 125597, - "symbolAliases": [ - { - "foreign": { - "id": 118241, - "name": "LibSafeRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125596, - "src": "736:12:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 125597, - "symbolAliases": [ - { - "foreign": { - "id": 118241, - "name": "LibSafeRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125596, - "src": "736:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getRenewalFee(string,uint256)": { + "details": "Returns the renewal fee in USD and RON.", + "params": { + "duration": "Amount of second(s).", + "label": "The domain label to register (Eg, 'foo' for 'foo.ron')." + } }, - { -<<<<<<< Updated upstream - "id": 86329, - "nodeType": "ImportDirective", - "src": "793:54:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86329, - "nodeType": "ImportDirective", - "src": "793:54:147", -======= - "id": 118244, - "nodeType": "ImportDirective", - "src": "793:54:163", ->>>>>>> Stashed changes -======= - "id": 118244, - "nodeType": "ImportDirective", - "src": "793:54:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/LibString.sol", - "file": "./libraries/LibString.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 93390, - "symbolAliases": [ - { - "foreign": { - "id": 86328, - "name": "LibString", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93389, - "src": "802:9:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 125335, - "symbolAliases": [ - { - "foreign": { - "id": 118243, - "name": "LibString", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125334, - "src": "802:9:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 125335, - "symbolAliases": [ - { - "foreign": { - "id": 118243, - "name": "LibString", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125334, - "src": "802:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getRenewalFeeByLengths()": { + "details": "Returns the renewal fee by lengths." }, - { -<<<<<<< Updated upstream - "id": 86331, - "nodeType": "ImportDirective", - "src": "848:60:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86331, - "nodeType": "ImportDirective", - "src": "848:60:147", -======= - "id": 118246, - "nodeType": "ImportDirective", - "src": "848:60:163", ->>>>>>> Stashed changes -======= - "id": 118246, - "nodeType": "ImportDirective", - "src": "848:60:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/LibRNSDomain.sol", - "file": "./libraries/LibRNSDomain.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 93108, - "symbolAliases": [ - { - "foreign": { - "id": 86330, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93107, - "src": "857:12:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 125053, - "symbolAliases": [ - { - "foreign": { - "id": 118245, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125052, - "src": "857:12:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 125053, - "symbolAliases": [ - { - "foreign": { - "id": 118245, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125052, - "src": "857:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." }, - { -<<<<<<< Updated upstream - "id": 86333, - "nodeType": "ImportDirective", - "src": "909:67:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86333, - "nodeType": "ImportDirective", - "src": "909:67:147", -======= - "id": 118248, - "nodeType": "ImportDirective", - "src": "909:67:163", ->>>>>>> Stashed changes -======= - "id": 118248, - "nodeType": "ImportDirective", - "src": "909:67:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "absolutePath": "src/libraries/pyth/PythConverter.sol", - "file": "./libraries/pyth/PythConverter.sol", - "nameLocation": "-1:-1:-1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "scope": 87686, - "sourceUnit": 94443, - "symbolAliases": [ - { - "foreign": { - "id": 86332, - "name": "PythConverter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 94442, - "src": "918:13:147", -<<<<<<< Updated upstream -======= -======= - "scope": 119627, - "sourceUnit": 126388, - "symbolAliases": [ - { - "foreign": { - "id": 118247, - "name": "PythConverter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 126387, - "src": "918:13:163", ->>>>>>> Stashed changes -======= - "scope": 119627, - "sourceUnit": 126388, - "symbolAliases": [ - { - "foreign": { - "id": 118247, - "name": "PythConverter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 126387, - "src": "918:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87685, - "nodeType": "ContractDefinition", - "src": "978:14179:147", - "nodes": [ - { - "id": 86341, - "nodeType": "UsingForDirective", - "src": "1064:22:147", - "nodes": [], - "global": false, - "libraryName": { - "id": 86340, - "name": "LibString", - "nameLocations": [ - "1070:9:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93389, - "src": "1070:9:147" - } - }, - { - "id": 86344, - "nodeType": "UsingForDirective", - "src": "1089:30:147", - "nodes": [], - "global": false, - "libraryName": { - "id": 86342, - "name": "LibRNSDomain", - "nameLocations": [ - "1095:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93107, - "src": "1095:12:147" - }, - "typeName": { - "id": 86343, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1112:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119626, - "nodeType": "ContractDefinition", - "src": "978:15103:163", - "nodes": [ - { - "id": 118256, - "nodeType": "UsingForDirective", - "src": "1064:22:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118255, - "name": "LibString", - "nameLocations": [ - "1070:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125334, - "src": "1070:9:163" - } - }, - { - "id": 118259, - "nodeType": "UsingForDirective", - "src": "1089:30:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118257, - "name": "LibRNSDomain", - "nameLocations": [ - "1095:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125052, - "src": "1095:12:163" - }, - "typeName": { - "id": 118258, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1112:6:163", ->>>>>>> Stashed changes -======= - "id": 119626, - "nodeType": "ContractDefinition", - "src": "978:15103:163", - "nodes": [ - { - "id": 118256, - "nodeType": "UsingForDirective", - "src": "1064:22:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118255, - "name": "LibString", - "nameLocations": [ - "1070:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125334, - "src": "1070:9:163" - } - }, - { - "id": 118259, - "nodeType": "UsingForDirective", - "src": "1089:30:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118257, - "name": "LibRNSDomain", - "nameLocations": [ - "1095:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125052, - "src": "1095:12:163" - }, - "typeName": { - "id": 118258, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1112:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86348, - "nodeType": "UsingForDirective", - "src": "1122:39:147", - "nodes": [], - "global": false, - "libraryName": { - "id": 86345, - "name": "LibPeriodScaler", - "nameLocations": [ - "1128:15:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93753, - "src": "1128:15:147" - }, - "typeName": { - "id": 86347, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86346, - "name": "PeriodScaler", - "nameLocations": [ - "1148:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "1148:12:147" - }, - "referencedDeclaration": 93662, - "src": "1148:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118263, - "nodeType": "UsingForDirective", - "src": "1122:39:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118260, - "name": "LibPeriodScaler", - "nameLocations": [ - "1128:15:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125698, - "src": "1128:15:163" - }, - "typeName": { - "id": 118262, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118261, - "name": "PeriodScaler", - "nameLocations": [ - "1148:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "1148:12:163" - }, - "referencedDeclaration": 125607, - "src": "1148:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118263, - "nodeType": "UsingForDirective", - "src": "1122:39:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118260, - "name": "LibPeriodScaler", - "nameLocations": [ - "1128:15:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125698, - "src": "1128:15:163" - }, - "typeName": { - "id": 118262, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118261, - "name": "PeriodScaler", - "nameLocations": [ - "1148:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "1148:12:163" - }, - "referencedDeclaration": 125607, - "src": "1148:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86352, - "nodeType": "UsingForDirective", - "src": "1164:42:147", - "nodes": [], - "global": false, - "libraryName": { - "id": 86349, - "name": "PythConverter", - "nameLocations": [ - "1170:13:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 94442, - "src": "1170:13:147" - }, - "typeName": { - "id": 86351, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86350, - "name": "PythStructs.Price", - "nameLocations": [ - "1188:11:147", - "1200:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75235, - "src": "1188:17:147" - }, - "referencedDeclaration": 75235, - "src": "1188:17:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$75235_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118267, - "nodeType": "UsingForDirective", - "src": "1164:42:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118264, - "name": "PythConverter", - "nameLocations": [ - "1170:13:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 126387, - "src": "1170:13:163" - }, - "typeName": { - "id": 118266, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118265, - "name": "PythStructs.Price", - "nameLocations": [ - "1188:11:163", - "1200:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106153, - "src": "1188:17:163" - }, - "referencedDeclaration": 106153, - "src": "1188:17:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118267, - "nodeType": "UsingForDirective", - "src": "1164:42:163", - "nodes": [], - "global": false, - "libraryName": { - "id": 118264, - "name": "PythConverter", - "nameLocations": [ - "1170:13:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 126387, - "src": "1170:13:163" - }, - "typeName": { - "id": 118266, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118265, - "name": "PythStructs.Price", - "nameLocations": [ - "1188:11:163", - "1200:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106153, - "src": "1188:17:163" - }, - "referencedDeclaration": 106153, - "src": "1188:17:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PythStructs.Price" - } - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86356, - "nodeType": "VariableDeclaration", - "src": "1266:50:147", - "nodes": [], - "constant": true, - "documentation": { - "id": 86353, - "nodeType": "StructuredDocumentation", - "src": "1210:53:147", - "text": "@dev The threshold tier value (in USD) for Tier 1" - }, - "mutability": "constant", - "name": "TIER_1_THRESHOLD", - "nameLocation": "1291:16:147", - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "id": 118271, - "nodeType": "VariableDeclaration", -======= - "id": 118271, - "nodeType": "VariableDeclaration", ->>>>>>> Stashed changes - "src": "1274:64:163", - "nodes": [], - "constant": true, - "documentation": { - "id": 118268, - "nodeType": "StructuredDocumentation", - "src": "1210:61:163", - "text": "@dev The threshold tier value (in USD) for Tier 1: > $200" - }, - "mutability": "constant", - "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", - "nameLocation": "1299:30:163", - "scope": 119626, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86354, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1266:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118269, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1274:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "323030653138", -<<<<<<< Updated upstream - "id": 86355, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86355, -======= - "id": 118270, ->>>>>>> Stashed changes -======= - "id": 118270, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1310:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1310:6:147", -======= - "src": "1332:6:163", ->>>>>>> Stashed changes -======= - "src": "1332:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_200000000000000000000_by_1", - "typeString": "int_const 200000000000000000000" - }, - "value": "200e18" - }, - "visibility": "private" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86360, - "nodeType": "VariableDeclaration", - "src": "1376:49:147", - "nodes": [], - "constant": true, - "documentation": { - "id": 86357, - "nodeType": "StructuredDocumentation", - "src": "1320:53:147", - "text": "@dev The threshold tier value (in USD) for Tier 2" - }, - "mutability": "constant", - "name": "TIER_2_THRESHOLD", - "nameLocation": "1401:16:147", - "scope": 87685, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118275, - "nodeType": "VariableDeclaration", - "src": "1422:63:163", - "nodes": [], - "constant": true, - "documentation": { - "id": 118272, - "nodeType": "StructuredDocumentation", - "src": "1342:77:163", - "text": "@dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]" - }, - "mutability": "constant", - "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", - "nameLocation": "1447:30:163", - "scope": 119626, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86358, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1376:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118273, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1422:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "3530653138", -<<<<<<< Updated upstream - "id": 86359, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86359, -======= - "id": 118274, ->>>>>>> Stashed changes -======= - "id": 118274, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1420:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1420:5:147", -======= - "src": "1480:5:163", ->>>>>>> Stashed changes -======= - "src": "1480:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_50000000000000000000_by_1", - "typeString": "int_const 50000000000000000000" - }, - "value": "50e18" - }, - "visibility": "private" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86364, - "nodeType": "VariableDeclaration", - "src": "1462:39:147", - "nodes": [], - "baseFunctions": [ - 91663 - ], - "constant": true, - "documentation": { - "id": 86361, - "nodeType": "StructuredDocumentation", - "src": "1429:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118279, - "nodeType": "VariableDeclaration", - "src": "1522:39:163", - "nodes": [], - "baseFunctions": [ - 123608 - ], - "constant": true, - "documentation": { - "id": 118276, - "nodeType": "StructuredDocumentation", - "src": "1489:30:163", ->>>>>>> Stashed changes -======= - "id": 118279, - "nodeType": "VariableDeclaration", - "src": "1522:39:163", - "nodes": [], - "baseFunctions": [ - 123608 - ], - "constant": true, - "documentation": { - "id": 118276, - "nodeType": "StructuredDocumentation", - "src": "1489:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@inheritdoc INSDomainPrice" - }, - "functionSelector": "2f6ee695", - "mutability": "constant", - "name": "USD_DECIMALS", -<<<<<<< Updated upstream - "nameLocation": "1484:12:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "1484:12:147", - "scope": 87685, -======= - "nameLocation": "1544:12:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "1544:12:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86362, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1462:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118277, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1522:5:163", ->>>>>>> Stashed changes -======= - "id": 118277, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1522:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "hexValue": "3138", -<<<<<<< Updated upstream - "id": 86363, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86363, -======= - "id": 118278, ->>>>>>> Stashed changes -======= - "id": 118278, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1499:2:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1499:2:147", -======= - "src": "1559:2:163", ->>>>>>> Stashed changes -======= - "src": "1559:2:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86368, - "nodeType": "VariableDeclaration", - "src": "1538:46:147", - "nodes": [], - "baseFunctions": [ - 91657 - ], - "constant": true, - "documentation": { - "id": 86365, - "nodeType": "StructuredDocumentation", - "src": "1505:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118283, - "nodeType": "VariableDeclaration", - "src": "1598:46:163", - "nodes": [], - "baseFunctions": [ - 123602 - ], - "constant": true, - "documentation": { - "id": 118280, - "nodeType": "StructuredDocumentation", - "src": "1565:30:163", ->>>>>>> Stashed changes -======= - "id": 118283, - "nodeType": "VariableDeclaration", - "src": "1598:46:163", - "nodes": [], - "baseFunctions": [ - 123602 - ], - "constant": true, - "documentation": { - "id": 118280, - "nodeType": "StructuredDocumentation", - "src": "1565:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@inheritdoc INSDomainPrice" - }, - "functionSelector": "4c255c97", - "mutability": "constant", - "name": "MAX_PERCENTAGE", -<<<<<<< Updated upstream - "nameLocation": "1561:14:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "1561:14:147", - "scope": 87685, -======= - "nameLocation": "1621:14:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "1621:14:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86366, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1538:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118281, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1598:6:163", ->>>>>>> Stashed changes -======= - "id": 118281, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "1598:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "value": { - "hexValue": "3130305f3030", -<<<<<<< Updated upstream - "id": 86367, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86367, -======= - "id": 118282, ->>>>>>> Stashed changes -======= - "id": 118282, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1578:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1578:6:147", -======= - "src": "1638:6:163", ->>>>>>> Stashed changes -======= - "src": "1638:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "100_00" - }, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86374, - "nodeType": "VariableDeclaration", - "src": "1621:66:147", - "nodes": [], - "baseFunctions": [ - 91645 - ], - "constant": true, - "documentation": { - "id": 86369, - "nodeType": "StructuredDocumentation", - "src": "1588:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118289, - "nodeType": "VariableDeclaration", - "src": "1681:66:163", - "nodes": [], - "baseFunctions": [ - 123590 - ], - "constant": true, - "documentation": { - "id": 118284, - "nodeType": "StructuredDocumentation", - "src": "1648:30:163", ->>>>>>> Stashed changes -======= - "id": 118289, - "nodeType": "VariableDeclaration", - "src": "1681:66:163", - "nodes": [], - "baseFunctions": [ - 123590 - ], - "constant": true, - "documentation": { - "id": 118284, - "nodeType": "StructuredDocumentation", - "src": "1648:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@inheritdoc INSDomainPrice" - }, - "functionSelector": "f5b541a6", - "mutability": "constant", - "name": "OPERATOR_ROLE", -<<<<<<< Updated upstream - "nameLocation": "1645:13:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "1645:13:147", - "scope": 87685, -======= - "nameLocation": "1705:13:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "1705:13:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86370, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1621:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118285, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1681:7:163", ->>>>>>> Stashed changes -======= - "id": 118285, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1681:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "4f50455241544f525f524f4c45", -<<<<<<< Updated upstream - "id": 86372, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86372, -======= - "id": 118287, ->>>>>>> Stashed changes -======= - "id": 118287, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1671:15:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1671:15:147", -======= - "src": "1731:15:163", ->>>>>>> Stashed changes -======= - "src": "1731:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929", - "typeString": "literal_string \"OPERATOR_ROLE\"" - }, - "value": "OPERATOR_ROLE" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929", - "typeString": "literal_string \"OPERATOR_ROLE\"" - } - ], -<<<<<<< Updated upstream - "id": 86371, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86371, -======= - "id": 118286, ->>>>>>> Stashed changes -======= - "id": 118286, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, -<<<<<<< Updated upstream - "src": "1661:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1661:9:147", -======= - "src": "1721:9:163", ->>>>>>> Stashed changes -======= - "src": "1721:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, -<<<<<<< Updated upstream - "id": 86373, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86373, -======= - "id": 118288, ->>>>>>> Stashed changes -======= - "id": 118288, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "1661:26:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1661:26:147", -======= - "src": "1721:26:163", ->>>>>>> Stashed changes -======= - "src": "1721:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86380, - "nodeType": "VariableDeclaration", - "src": "1724:68:147", - "nodes": [], - "baseFunctions": [ - 91651 - ], - "constant": true, - "documentation": { - "id": 86375, - "nodeType": "StructuredDocumentation", - "src": "1691:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118295, - "nodeType": "VariableDeclaration", - "src": "1784:68:163", - "nodes": [], - "baseFunctions": [ - 123596 - ], - "constant": true, - "documentation": { - "id": 118290, - "nodeType": "StructuredDocumentation", - "src": "1751:30:163", ->>>>>>> Stashed changes -======= - "id": 118295, - "nodeType": "VariableDeclaration", - "src": "1784:68:163", - "nodes": [], - "baseFunctions": [ - 123596 - ], - "constant": true, - "documentation": { - "id": 118290, - "nodeType": "StructuredDocumentation", - "src": "1751:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@inheritdoc INSDomainPrice" - }, - "functionSelector": "700213c8", - "mutability": "constant", - "name": "OVERRIDER_ROLE", -<<<<<<< Updated upstream - "nameLocation": "1748:14:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "1748:14:147", - "scope": 87685, -======= - "nameLocation": "1808:14:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "1808:14:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86376, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1724:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118291, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1784:7:163", ->>>>>>> Stashed changes -======= - "id": 118291, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1784:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "4f56455252494445525f524f4c45", -<<<<<<< Updated upstream - "id": 86378, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86378, -======= - "id": 118293, ->>>>>>> Stashed changes -======= - "id": 118293, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1775:16:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1775:16:147", -======= - "src": "1835:16:163", ->>>>>>> Stashed changes -======= - "src": "1835:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad", - "typeString": "literal_string \"OVERRIDER_ROLE\"" - }, - "value": "OVERRIDER_ROLE" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fad", - "typeString": "literal_string \"OVERRIDER_ROLE\"" - } - ], -<<<<<<< Updated upstream - "id": 86377, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86377, -======= - "id": 118292, ->>>>>>> Stashed changes -======= - "id": 118292, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, -<<<<<<< Updated upstream - "src": "1765:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1765:9:147", -======= - "src": "1825:9:163", ->>>>>>> Stashed changes -======= - "src": "1825:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, -<<<<<<< Updated upstream - "id": 86379, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86379, -======= - "id": 118294, ->>>>>>> Stashed changes -======= - "id": 118294, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "1765:27:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1765:27:147", -======= - "src": "1825:27:163", ->>>>>>> Stashed changes -======= - "src": "1825:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86385, - "nodeType": "VariableDeclaration", - "src": "1832:27:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86381, - "nodeType": "StructuredDocumentation", - "src": "1797:32:147", -<<<<<<< Updated upstream -======= -======= - "id": 118300, - "nodeType": "VariableDeclaration", - "src": "1892:27:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118296, - "nodeType": "StructuredDocumentation", - "src": "1857:32:163", ->>>>>>> Stashed changes -======= - "id": 118300, - "nodeType": "VariableDeclaration", - "src": "1892:27:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118296, - "nodeType": "StructuredDocumentation", - "src": "1857:32:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Gap for upgradeability." - }, - "mutability": "mutable", - "name": "____gap", -<<<<<<< Updated upstream - "nameLocation": "1852:7:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "1852:7:147", - "scope": 87685, -======= - "nameLocation": "1912:7:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "1912:7:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$50_storage", - "typeString": "uint256[50]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86382, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1832:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118297, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1892:7:163", ->>>>>>> Stashed changes -======= - "id": 118297, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1892:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86384, - "length": { - "hexValue": "3530", - "id": 86383, -<<<<<<< Updated upstream -======= -======= - "id": 118299, - "length": { - "hexValue": "3530", - "id": 118298, ->>>>>>> Stashed changes -======= - "id": 118299, - "length": { - "hexValue": "3530", - "id": 118298, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "1840:2:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1840:2:147", -======= - "src": "1900:2:163", ->>>>>>> Stashed changes -======= - "src": "1900:2:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_50_by_1", - "typeString": "int_const 50" - }, - "value": "50" - }, - "nodeType": "ArrayTypeName", -<<<<<<< Updated upstream - "src": "1832:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "1832:11:147", -======= - "src": "1892:11:163", ->>>>>>> Stashed changes -======= - "src": "1892:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", - "typeString": "uint256[50]" - } - }, - "visibility": "private" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86389, - "nodeType": "VariableDeclaration", - "src": "1896:20:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86386, - "nodeType": "StructuredDocumentation", - "src": "1864:29:147", -<<<<<<< Updated upstream -======= -======= - "id": 118304, - "nodeType": "VariableDeclaration", - "src": "1956:20:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118301, - "nodeType": "StructuredDocumentation", - "src": "1924:29:163", ->>>>>>> Stashed changes -======= - "id": 118304, - "nodeType": "VariableDeclaration", - "src": "1956:20:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118301, - "nodeType": "StructuredDocumentation", - "src": "1924:29:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Pyth oracle contract" - }, - "mutability": "mutable", - "name": "_pyth", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "1911:5:147", - "scope": 87685, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 86388, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86387, - "name": "IPyth", - "nameLocations": [ - "1896:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75202, - "src": "1896:5:147" - }, - "referencedDeclaration": 75202, - "src": "1896:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "nameLocation": "1971:5:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118303, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118302, - "name": "IPyth", - "nameLocations": [ - "1956:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "1956:5:163" - }, - "referencedDeclaration": 106120, - "src": "1956:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "nameLocation": "1971:5:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118303, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118302, - "name": "IPyth", - "nameLocations": [ - "1956:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "1956:5:163" - }, - "referencedDeclaration": 106120, - "src": "1956:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86393, - "nodeType": "VariableDeclaration", - "src": "1951:28:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86390, - "nodeType": "StructuredDocumentation", - "src": "1920:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 118308, - "nodeType": "VariableDeclaration", - "src": "2011:28:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118305, - "nodeType": "StructuredDocumentation", - "src": "1980:28:163", ->>>>>>> Stashed changes -======= - "id": 118308, - "nodeType": "VariableDeclaration", - "src": "2011:28:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118305, - "nodeType": "StructuredDocumentation", - "src": "1980:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev RNSAuction contract" - }, - "mutability": "mutable", - "name": "_auction", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "1971:8:147", - "scope": 87685, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 86392, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86391, - "name": "INSAuction", - "nameLocations": [ - "1951:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91351, - "src": "1951:10:147" - }, - "referencedDeclaration": 91351, - "src": "1951:10:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", -<<<<<<< Updated upstream -======= -======= - "nameLocation": "2031:8:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 118307, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118306, - "name": "INSAuction", - "nameLocations": [ - "2011:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123292, - "src": "2011:10:163" - }, - "referencedDeclaration": 123292, - "src": "2011:10:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes -======= - "nameLocation": "2031:8:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 118307, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118306, - "name": "INSAuction", - "nameLocations": [ - "2011:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123292, - "src": "2011:10:163" - }, - "referencedDeclaration": 123292, - "src": "2011:10:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract INSAuction" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86396, - "nodeType": "VariableDeclaration", - "src": "2052:26:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86394, - "nodeType": "StructuredDocumentation", - "src": "1983:66:147", -<<<<<<< Updated upstream -======= -======= - "id": 118311, - "nodeType": "VariableDeclaration", - "src": "2112:26:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118309, - "nodeType": "StructuredDocumentation", - "src": "2043:66:163", ->>>>>>> Stashed changes -======= - "id": 118311, - "nodeType": "VariableDeclaration", - "src": "2112:26:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118309, - "nodeType": "StructuredDocumentation", - "src": "2043:66:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Extra fee for renewals based on the current domain price." - }, - "mutability": "mutable", - "name": "_taxRatio", -<<<<<<< Updated upstream - "nameLocation": "2069:9:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2069:9:147", - "scope": 87685, -======= - "nameLocation": "2129:9:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2129:9:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86395, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2052:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2112:7:163", ->>>>>>> Stashed changes -======= - "id": 118310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2112:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86399, - "nodeType": "VariableDeclaration", - "src": "2123:30:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86397, - "nodeType": "StructuredDocumentation", - "src": "2082:38:147", -<<<<<<< Updated upstream -======= -======= - "id": 118314, - "nodeType": "VariableDeclaration", - "src": "2183:30:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118312, - "nodeType": "StructuredDocumentation", - "src": "2142:38:163", ->>>>>>> Stashed changes -======= - "id": 118314, - "nodeType": "VariableDeclaration", - "src": "2183:30:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118312, - "nodeType": "StructuredDocumentation", - "src": "2142:38:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Max length of the renewal fee" - }, - "mutability": "mutable", - "name": "_rnfMaxLength", -<<<<<<< Updated upstream - "nameLocation": "2140:13:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2140:13:147", - "scope": 87685, -======= - "nameLocation": "2200:13:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2200:13:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86398, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2123:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118313, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2183:7:163", ->>>>>>> Stashed changes -======= - "id": 118313, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2183:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86402, - "nodeType": "VariableDeclaration", - "src": "2215:34:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86400, - "nodeType": "StructuredDocumentation", - "src": "2157:55:147", -<<<<<<< Updated upstream -======= -======= - "id": 118317, - "nodeType": "VariableDeclaration", - "src": "2275:34:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118315, - "nodeType": "StructuredDocumentation", - "src": "2217:55:163", ->>>>>>> Stashed changes -======= - "id": 118317, - "nodeType": "VariableDeclaration", - "src": "2275:34:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118315, - "nodeType": "StructuredDocumentation", - "src": "2217:55:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Max acceptable age of the price oracle request" - }, - "mutability": "mutable", - "name": "_maxAcceptableAge", -<<<<<<< Updated upstream - "nameLocation": "2232:17:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2232:17:147", - "scope": 87685, -======= - "nameLocation": "2292:17:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2292:17:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86401, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2215:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118316, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2275:7:163", ->>>>>>> Stashed changes -======= - "id": 118316, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2275:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86405, - "nodeType": "VariableDeclaration", - "src": "2298:33:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86403, - "nodeType": "StructuredDocumentation", - "src": "2253:42:147", -<<<<<<< Updated upstream -======= -======= - "id": 118320, - "nodeType": "VariableDeclaration", - "src": "2358:33:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118318, - "nodeType": "StructuredDocumentation", - "src": "2313:42:163", ->>>>>>> Stashed changes -======= - "id": 118320, - "nodeType": "VariableDeclaration", - "src": "2358:33:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118318, - "nodeType": "StructuredDocumentation", - "src": "2313:42:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Price feed ID on Pyth for RON/USD" - }, - "mutability": "mutable", - "name": "_pythIdForRONUSD", -<<<<<<< Updated upstream - "nameLocation": "2315:16:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2315:16:147", - "scope": 87685, -======= - "nameLocation": "2375:16:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2375:16:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86404, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2298:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118319, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2358:7:163", ->>>>>>> Stashed changes -======= - "id": 118319, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2358:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86409, - "nodeType": "VariableDeclaration", - "src": "2397:35:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86406, - "nodeType": "StructuredDocumentation", - "src": "2335:59:147", -<<<<<<< Updated upstream -======= -======= - "id": 118324, - "nodeType": "VariableDeclaration", - "src": "2457:35:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118321, - "nodeType": "StructuredDocumentation", - "src": "2395:59:163", ->>>>>>> Stashed changes -======= - "id": 118324, - "nodeType": "VariableDeclaration", - "src": "2457:35:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118321, - "nodeType": "StructuredDocumentation", - "src": "2395:59:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev The percentage scale from domain price each period" - }, - "mutability": "mutable", - "name": "_dpDownScaler", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "2419:13:147", - "scope": 87685, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 86408, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86407, - "name": "PeriodScaler", - "nameLocations": [ - "2397:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "2397:12:147" - }, - "referencedDeclaration": 93662, - "src": "2397:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "nameLocation": "2479:13:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118323, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118322, - "name": "PeriodScaler", - "nameLocations": [ - "2457:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "2457:12:163" - }, - "referencedDeclaration": 125607, - "src": "2457:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "nameLocation": "2479:13:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118323, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118322, - "name": "PeriodScaler", - "nameLocations": [ - "2457:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "2457:12:163" - }, - "referencedDeclaration": 125607, - "src": "2457:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86414, - "nodeType": "VariableDeclaration", - "src": "2497:59:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86410, - "nodeType": "StructuredDocumentation", - "src": "2437:57:147", -<<<<<<< Updated upstream -======= -======= - "id": 118329, - "nodeType": "VariableDeclaration", - "src": "2557:59:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118325, - "nodeType": "StructuredDocumentation", - "src": "2497:57:163", ->>>>>>> Stashed changes -======= - "id": 118329, - "nodeType": "VariableDeclaration", - "src": "2557:59:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118325, - "nodeType": "StructuredDocumentation", - "src": "2497:57:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Mapping from domain length => renewal fee in USD" - }, - "mutability": "mutable", - "name": "_rnFee", -<<<<<<< Updated upstream - "nameLocation": "2550:6:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2550:6:147", - "scope": 87685, -======= - "nameLocation": "2610:6:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2610:6:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86413, - "keyName": "length", - "keyNameLocation": "2513:6:147", - "keyType": { - "id": 86411, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2505:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118328, - "keyName": "length", - "keyNameLocation": "2573:6:163", - "keyType": { - "id": 118326, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2565:7:163", ->>>>>>> Stashed changes -======= - "id": 118328, - "keyName": "length", - "keyNameLocation": "2573:6:163", - "keyType": { - "id": 118326, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2565:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", -<<<<<<< Updated upstream - "src": "2497:43:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "2497:43:147", -======= - "src": "2557:43:163", ->>>>>>> Stashed changes -======= - "src": "2557:43:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - }, - "valueName": "usdPrice", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "valueNameLocation": "2531:8:147", - "valueType": { - "id": 86412, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2523:7:147", -<<<<<<< Updated upstream -======= -======= - "valueNameLocation": "2591:8:163", - "valueType": { - "id": 118327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2583:7:163", ->>>>>>> Stashed changes -======= - "valueNameLocation": "2591:8:163", - "valueType": { - "id": 118327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2583:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86420, - "nodeType": "VariableDeclaration", - "src": "2612:65:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86415, - "nodeType": "StructuredDocumentation", - "src": "2560:49:147", -<<<<<<< Updated upstream -======= -======= - "id": 118335, - "nodeType": "VariableDeclaration", - "src": "2672:65:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118330, - "nodeType": "StructuredDocumentation", - "src": "2620:49:163", ->>>>>>> Stashed changes -======= - "id": 118335, - "nodeType": "VariableDeclaration", - "src": "2672:65:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118330, - "nodeType": "StructuredDocumentation", - "src": "2620:49:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Mapping from name => domain price in USD" - }, - "mutability": "mutable", - "name": "_dp", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "2674:3:147", - "scope": 87685, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$93585_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "typeName": { - "id": 86419, - "keyName": "lbHash", - "keyNameLocation": "2628:6:147", - "keyType": { - "id": 86416, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2620:7:147", -<<<<<<< Updated upstream -======= -======= - "nameLocation": "2734:3:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "typeName": { - "id": 118334, - "keyName": "lbHash", - "keyNameLocation": "2688:6:163", - "keyType": { - "id": 118331, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2680:7:163", ->>>>>>> Stashed changes -======= - "nameLocation": "2734:3:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "typeName": { - "id": 118334, - "keyName": "lbHash", - "keyNameLocation": "2688:6:163", - "keyType": { - "id": 118331, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2680:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "2612:52:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$93585_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "valueName": "usdPrice", - "valueNameLocation": "2655:8:147", - "valueType": { - "id": 86418, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86417, - "name": "TimestampWrapper", - "nameLocations": [ - "2638:16:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93585, - "src": "2638:16:147" - }, - "referencedDeclaration": 93585, - "src": "2638:16:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "src": "2672:52:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "valueName": "usdPrice", - "valueNameLocation": "2715:8:163", - "valueType": { - "id": 118333, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118332, - "name": "TimestampWrapper", - "nameLocations": [ - "2698:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "2698:16:163" - }, - "referencedDeclaration": 125530, - "src": "2698:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", ->>>>>>> Stashed changes -======= - "src": "2672:52:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper)" - }, - "valueName": "usdPrice", - "valueNameLocation": "2715:8:163", - "valueType": { - "id": 118333, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118332, - "name": "TimestampWrapper", - "nameLocations": [ - "2698:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "2698:16:163" - }, - "referencedDeclaration": 125530, - "src": "2698:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct TimestampWrapper" - } - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86425, - "nodeType": "VariableDeclaration", - "src": "2756:69:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86421, - "nodeType": "StructuredDocumentation", - "src": "2681:72:147", -<<<<<<< Updated upstream -======= -======= - "id": 118340, - "nodeType": "VariableDeclaration", - "src": "2816:69:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118336, - "nodeType": "StructuredDocumentation", - "src": "2741:72:163", ->>>>>>> Stashed changes -======= - "id": 118340, - "nodeType": "VariableDeclaration", - "src": "2816:69:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118336, - "nodeType": "StructuredDocumentation", - "src": "2741:72:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Mapping from name => inverse bitwise of renewal fee overriding." - }, - "mutability": "mutable", - "name": "_rnFeeOverriding", -<<<<<<< Updated upstream - "nameLocation": "2809:16:147", - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "2809:16:147", - "scope": 87685, -======= - "nameLocation": "2869:16:163", - "scope": 119626, ->>>>>>> Stashed changes -======= - "nameLocation": "2869:16:163", - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86424, - "keyName": "lbHash", - "keyNameLocation": "2772:6:147", - "keyType": { - "id": 86422, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2764:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118339, - "keyName": "lbHash", - "keyNameLocation": "2832:6:163", - "keyType": { - "id": 118337, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2824:7:163", ->>>>>>> Stashed changes -======= - "id": 118339, - "keyName": "lbHash", - "keyNameLocation": "2832:6:163", - "keyType": { - "id": 118337, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2824:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", -<<<<<<< Updated upstream - "src": "2756:43:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "2756:43:147", -======= - "src": "2816:43:163", ->>>>>>> Stashed changes -======= - "src": "2816:43:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "valueName": "usdPrice", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "valueNameLocation": "2790:8:147", - "valueType": { - "id": 86423, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2782:7:147", -<<<<<<< Updated upstream -======= -======= - "valueNameLocation": "2850:8:163", - "valueType": { - "id": 118338, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2842:7:163", ->>>>>>> Stashed changes -======= - "valueNameLocation": "2850:8:163", - "valueType": { - "id": 118338, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2842:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86430, - "nodeType": "VariableDeclaration", - "src": "2882:55:147", - "nodes": [], - "constant": false, - "documentation": { - "id": 86426, - "nodeType": "StructuredDocumentation", - "src": "2829:50:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118345, - "nodeType": "VariableDeclaration", - "src": "2942:62:163", - "nodes": [], - "constant": false, - "documentation": { - "id": 118341, - "nodeType": "StructuredDocumentation", - "src": "2889:50:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": "@dev Mapping from label hash to overriden tier" - }, - "mutability": "mutable", - "name": "_tierOverriding", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "2922:15:147", - "scope": 87685, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "typeName": { - "id": 86429, - "keyName": "lbHash", - "keyNameLocation": "2898:6:147", - "keyType": { - "id": 86427, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2890:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "nameLocation": "2989:15:163", - "scope": 119626, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", - "typeString": "mapping(bytes32 => uint8)" - }, - "typeName": { - "id": 118344, - "keyName": "lbHash", - "keyNameLocation": "2958:6:163", - "keyType": { - "id": 118342, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2950:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "2882:39:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "valueName": "tier", - "valueNameLocation": "2916:4:147", - "valueType": { - "id": 86428, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2908:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "2942:37:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", - "typeString": "mapping(bytes32 => uint8)" - }, - "valueName": "tier", - "valueNameLocation": "2974:4:163", - "valueType": { - "id": 118343, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2968:5:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - } - }, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86437, - "nodeType": "FunctionDefinition", - "src": "2942:55:147", - "nodes": [], - "body": { - "id": 86436, - "nodeType": "Block", - "src": "2964:33:147", -<<<<<<< Updated upstream -======= -======= - "id": 118352, - "nodeType": "FunctionDefinition", - "src": "3009:55:163", - "nodes": [], - "body": { - "id": 118351, - "nodeType": "Block", - "src": "3031:33:163", ->>>>>>> Stashed changes -======= - "id": 118352, - "nodeType": "FunctionDefinition", - "src": "3009:55:163", - "nodes": [], - "body": { - "id": 118351, - "nodeType": "Block", - "src": "3031:33:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86433, - "name": "_disableInitializers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 70587, - "src": "2970:20:147", -<<<<<<< Updated upstream -======= -======= - "id": 118348, - "name": "_disableInitializers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101505, - "src": "3037:20:163", ->>>>>>> Stashed changes -======= - "id": 118348, - "name": "_disableInitializers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101505, - "src": "3037:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, -<<<<<<< Updated upstream - "id": 86434, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86434, -======= - "id": 118349, ->>>>>>> Stashed changes -======= - "id": 118349, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "2970:22:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "2970:22:147", -======= - "src": "3037:22:163", ->>>>>>> Stashed changes -======= - "src": "3037:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86435, - "nodeType": "ExpressionStatement", - "src": "2970:22:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86435, - "nodeType": "ExpressionStatement", - "src": "2970:22:147" -======= - "id": 118350, - "nodeType": "ExpressionStatement", - "src": "3037:22:163" ->>>>>>> Stashed changes -======= - "id": 118350, - "nodeType": "ExpressionStatement", - "src": "3037:22:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86431, - "nodeType": "ParameterList", - "parameters": [], - "src": "2953:2:147" - }, - "returnParameters": { - "id": 86432, - "nodeType": "ParameterList", - "parameters": [], - "src": "2964:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "id": 118346, - "nodeType": "ParameterList", - "parameters": [], - "src": "3020:2:163" - }, - "returnParameters": { - "id": 118347, - "nodeType": "ParameterList", - "parameters": [], - "src": "3031:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "id": 118346, - "nodeType": "ParameterList", - "parameters": [], - "src": "3020:2:163" - }, - "returnParameters": { - "id": 118347, - "nodeType": "ParameterList", - "parameters": [], - "src": "3031:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "payable", - "virtual": false, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86522, - "nodeType": "FunctionDefinition", - "src": "3001:776:147", - "nodes": [], - "body": { - "id": 86521, - "nodeType": "Block", - "src": "3307:470:147", -<<<<<<< Updated upstream -======= -======= - "id": 118437, - "nodeType": "FunctionDefinition", - "src": "3068:776:163", - "nodes": [], - "body": { - "id": 118436, - "nodeType": "Block", - "src": "3374:470:163", ->>>>>>> Stashed changes -======= - "id": 118437, - "nodeType": "FunctionDefinition", - "src": "3068:776:163", - "nodes": [], - "body": { - "id": 118436, - "nodeType": "Block", - "src": "3374:470:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86467 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86467 -======= - 118382 ->>>>>>> Stashed changes -======= - 118382 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86467, - "mutability": "mutable", - "name": "length", - "nameLocation": "3321:6:147", - "nodeType": "VariableDeclaration", - "scope": 86521, - "src": "3313:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118382, - "mutability": "mutable", - "name": "length", - "nameLocation": "3388:6:163", - "nodeType": "VariableDeclaration", - "scope": 118436, - "src": "3380:14:163", ->>>>>>> Stashed changes -======= - "id": 118382, - "mutability": "mutable", - "name": "length", - "nameLocation": "3388:6:163", - "nodeType": "VariableDeclaration", - "scope": 118436, - "src": "3380:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86466, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3313:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118381, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3380:7:163", ->>>>>>> Stashed changes -======= - "id": 118381, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3380:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86470, - "initialValue": { - "expression": { - "id": 86468, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86442, - "src": "3330:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118385, - "initialValue": { - "expression": { - "id": 118383, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118357, - "src": "3397:9:163", ->>>>>>> Stashed changes -======= - "id": 118385, - "initialValue": { - "expression": { - "id": 118383, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118357, - "src": "3397:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 86469, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86469, -======= - "id": 118384, ->>>>>>> Stashed changes -======= - "id": 118384, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "3340:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3330:16:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "3407:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3397:16:163", ->>>>>>> Stashed changes -======= - "memberLocation": "3407:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3397:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "3313:33:147" - }, - { - "assignments": [ - 86472 -<<<<<<< Updated upstream -======= -======= - "src": "3380:33:163" - }, - { - "assignments": [ - 118387 ->>>>>>> Stashed changes -======= - "src": "3380:33:163" - }, - { - "assignments": [ - 118387 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86472, - "mutability": "mutable", - "name": "operatorRole", - "nameLocation": "3360:12:147", - "nodeType": "VariableDeclaration", - "scope": 86521, - "src": "3352:20:147", -<<<<<<< Updated upstream -======= -======= - "id": 118387, - "mutability": "mutable", - "name": "operatorRole", - "nameLocation": "3427:12:163", - "nodeType": "VariableDeclaration", - "scope": 118436, - "src": "3419:20:163", ->>>>>>> Stashed changes -======= - "id": 118387, - "mutability": "mutable", - "name": "operatorRole", - "nameLocation": "3427:12:163", - "nodeType": "VariableDeclaration", - "scope": 118436, - "src": "3419:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86471, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3352:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3419:7:163", ->>>>>>> Stashed changes -======= - "id": 118386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3419:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86474, - "initialValue": { - "id": 86473, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86374, - "src": "3375:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118389, - "initialValue": { - "id": 118388, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118289, - "src": "3442:13:163", ->>>>>>> Stashed changes -======= - "id": 118389, - "initialValue": { - "id": 118388, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118289, - "src": "3442:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "3352:36:147" - }, - { - "body": { - "id": 86492, - "nodeType": "Block", - "src": "3424:93:147", -<<<<<<< Updated upstream -======= -======= - "src": "3419:36:163" - }, - { - "body": { - "id": 118407, - "nodeType": "Block", - "src": "3491:93:163", ->>>>>>> Stashed changes -======= - "src": "3419:36:163" - }, - { - "body": { - "id": 118407, - "nodeType": "Block", - "src": "3491:93:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86482, - "name": "operatorRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86472, - "src": "3443:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 118397, - "name": "operatorRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118387, - "src": "3510:12:163", ->>>>>>> Stashed changes -======= - "id": 118397, - "name": "operatorRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118387, - "src": "3510:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86483, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86442, - "src": "3457:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118398, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118357, - "src": "3524:9:163", ->>>>>>> Stashed changes -======= - "id": 118398, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118357, - "src": "3524:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86485, - "indexExpression": { - "id": 86484, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86476, - "src": "3467:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118400, - "indexExpression": { - "id": 118399, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3534:1:163", ->>>>>>> Stashed changes -======= - "id": 118400, - "indexExpression": { - "id": 118399, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3534:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "3457:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3457:12:147", -======= - "src": "3524:12:163", ->>>>>>> Stashed changes -======= - "src": "3524:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86481, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69116, - "src": "3432:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 118396, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100034, - "src": "3499:10:163", ->>>>>>> Stashed changes -======= - "id": 118396, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100034, - "src": "3499:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, -<<<<<<< Updated upstream - "id": 86486, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86486, -======= - "id": 118401, ->>>>>>> Stashed changes -======= - "id": 118401, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3432:38:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3432:38:147", -======= - "src": "3499:38:163", ->>>>>>> Stashed changes -======= - "src": "3499:38:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86487, - "nodeType": "ExpressionStatement", - "src": "3432:38:147" - }, - { - "id": 86491, - "nodeType": "UncheckedBlock", - "src": "3479:32:147", - "statements": [ - { - "expression": { - "id": 86489, -<<<<<<< Updated upstream -======= -======= - "id": 118402, - "nodeType": "ExpressionStatement", - "src": "3499:38:163" - }, - { - "id": 118406, - "nodeType": "UncheckedBlock", - "src": "3546:32:163", - "statements": [ - { - "expression": { - "id": 118404, ->>>>>>> Stashed changes -======= - "id": 118402, - "nodeType": "ExpressionStatement", - "src": "3499:38:163" - }, - { - "id": 118406, - "nodeType": "UncheckedBlock", - "src": "3546:32:163", - "statements": [ - { - "expression": { - "id": 118404, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "3499:3:147", - "subExpression": { - "id": 86488, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86476, - "src": "3501:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "3566:3:163", - "subExpression": { - "id": 118403, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3568:1:163", ->>>>>>> Stashed changes -======= - "src": "3566:3:163", - "subExpression": { - "id": 118403, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3568:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86490, - "nodeType": "ExpressionStatement", - "src": "3499:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86490, - "nodeType": "ExpressionStatement", - "src": "3499:3:147" -======= - "id": 118405, - "nodeType": "ExpressionStatement", - "src": "3566:3:163" ->>>>>>> Stashed changes -======= - "id": 118405, - "nodeType": "ExpressionStatement", - "src": "3566:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86480, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86480, -======= - "id": 118395, ->>>>>>> Stashed changes -======= - "id": 118395, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86478, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86476, - "src": "3411:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118393, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3478:1:163", ->>>>>>> Stashed changes -======= - "id": 118393, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118391, - "src": "3478:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86479, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86467, - "src": "3415:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118394, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118382, - "src": "3482:6:163", ->>>>>>> Stashed changes -======= - "id": 118394, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118382, - "src": "3482:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "3411:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3411:10:147", -======= - "src": "3478:10:163", ->>>>>>> Stashed changes -======= - "src": "3478:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86493, - "initializationExpression": { - "assignments": [ - 86476 -<<<<<<< Updated upstream -======= -======= - "id": 118408, - "initializationExpression": { - "assignments": [ - 118391 ->>>>>>> Stashed changes -======= - "id": 118408, - "initializationExpression": { - "assignments": [ - 118391 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86476, - "mutability": "mutable", - "name": "i", - "nameLocation": "3408:1:147", - "nodeType": "VariableDeclaration", - "scope": 86493, - "src": "3400:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118391, - "mutability": "mutable", - "name": "i", - "nameLocation": "3475:1:163", - "nodeType": "VariableDeclaration", - "scope": 118408, - "src": "3467:9:163", ->>>>>>> Stashed changes -======= - "id": 118391, - "mutability": "mutable", - "name": "i", - "nameLocation": "3475:1:163", - "nodeType": "VariableDeclaration", - "scope": 118408, - "src": "3467:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86475, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3400:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118390, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3467:7:163", ->>>>>>> Stashed changes -======= - "id": 118390, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3467:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86477, - "nodeType": "VariableDeclarationStatement", - "src": "3400:9:147" - }, - "nodeType": "ForStatement", - "src": "3395:122:147" - }, - { - "expression": { - "id": 86496, -<<<<<<< Updated upstream -======= -======= - "id": 118392, - "nodeType": "VariableDeclarationStatement", - "src": "3467:9:163" - }, - "nodeType": "ForStatement", - "src": "3462:122:163" - }, - { - "expression": { - "id": 118411, ->>>>>>> Stashed changes -======= - "id": 118392, - "nodeType": "VariableDeclarationStatement", - "src": "3467:9:163" - }, - "nodeType": "ForStatement", - "src": "3462:122:163" - }, - { - "expression": { - "id": 118411, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86494, - "name": "_auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86393, - "src": "3522:8:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", -<<<<<<< Updated upstream -======= -======= - "id": 118409, - "name": "_auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118308, - "src": "3589:8:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes -======= - "id": 118409, - "name": "_auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118308, - "src": "3589:8:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract INSAuction" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86495, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86457, - "src": "3533:7:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "src": "3522:18:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "id": 86497, - "nodeType": "ExpressionStatement", - "src": "3522:18:147" -<<<<<<< Updated upstream -======= -======= - "id": 118410, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118372, - "src": "3600:7:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - } - }, - "src": "3589:18:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - } - }, - "id": 118412, - "nodeType": "ExpressionStatement", - "src": "3589:18:163" ->>>>>>> Stashed changes -======= - "id": 118410, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118372, - "src": "3600:7:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - } - }, - "src": "3589:18:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - } - }, - "id": 118412, - "nodeType": "ExpressionStatement", - "src": "3589:18:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86499, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68920, - "src": "3557:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118414, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "3624:18:163", ->>>>>>> Stashed changes -======= - "id": 118414, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "3624:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86500, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86439, - "src": "3577:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118415, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118354, - "src": "3644:5:163", ->>>>>>> Stashed changes -======= - "id": 118415, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118354, - "src": "3644:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86498, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69116, - "src": "3546:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 118413, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100034, - "src": "3613:10:163", ->>>>>>> Stashed changes -======= - "id": 118413, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 100034, - "src": "3613:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, -<<<<<<< Updated upstream - "id": 86501, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86501, -======= - "id": 118416, ->>>>>>> Stashed changes -======= - "id": 118416, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3546:37:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3546:37:147", -======= - "src": "3613:37:163", ->>>>>>> Stashed changes -======= - "src": "3613:37:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86502, - "nodeType": "ExpressionStatement", - "src": "3546:37:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86502, - "nodeType": "ExpressionStatement", - "src": "3546:37:147" -======= - "id": 118417, - "nodeType": "ExpressionStatement", - "src": "3613:37:163" ->>>>>>> Stashed changes -======= - "id": 118417, - "nodeType": "ExpressionStatement", - "src": "3613:37:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86504, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86446, - "src": "3613:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118419, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118361, - "src": "3680:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118419, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118361, - "src": "3680:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 86503, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87610, - "src": "3589:23:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 86505, -<<<<<<< Updated upstream -======= -======= - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 118418, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119372, - "src": "3656:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 118420, ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 118418, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119372, - "src": "3656:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 118420, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3589:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3589:36:147", -======= - "src": "3656:36:163", ->>>>>>> Stashed changes -======= - "src": "3656:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86506, - "nodeType": "ExpressionStatement", - "src": "3589:36:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86506, - "nodeType": "ExpressionStatement", - "src": "3589:36:147" -======= - "id": 118421, - "nodeType": "ExpressionStatement", - "src": "3656:36:163" ->>>>>>> Stashed changes -======= - "id": 118421, - "nodeType": "ExpressionStatement", - "src": "3656:36:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86508, - "name": "taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86448, - "src": "3644:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118423, - "name": "taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118363, - "src": "3711:8:163", ->>>>>>> Stashed changes -======= - "id": 118423, - "name": "taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118363, - "src": "3711:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86507, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87505, - "src": "3631:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 118422, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119267, - "src": "3698:12:163", ->>>>>>> Stashed changes -======= - "id": 118422, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119267, - "src": "3698:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86509, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86509, -======= - "id": 118424, ->>>>>>> Stashed changes -======= - "id": 118424, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3631:22:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3631:22:147", -======= - "src": "3698:22:163", ->>>>>>> Stashed changes -======= - "src": "3698:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86510, - "nodeType": "ExpressionStatement", - "src": "3631:22:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86510, - "nodeType": "ExpressionStatement", - "src": "3631:22:147" -======= - "id": 118425, - "nodeType": "ExpressionStatement", - "src": "3698:22:163" ->>>>>>> Stashed changes -======= - "id": 118425, - "nodeType": "ExpressionStatement", - "src": "3698:22:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86512, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86451, - "src": "3684:20:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118427, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118366, - "src": "3751:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118427, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118366, - "src": "3751:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 86511, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87526, - "src": "3659:24:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$93662_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 86513, -<<<<<<< Updated upstream -======= -======= - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 118426, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119288, - "src": "3726:24:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 118428, ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 118426, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119288, - "src": "3726:24:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 118428, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3659:46:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3659:46:147", -======= - "src": "3726:46:163", ->>>>>>> Stashed changes -======= - "src": "3726:46:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86514, - "nodeType": "ExpressionStatement", - "src": "3659:46:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86514, - "nodeType": "ExpressionStatement", - "src": "3659:46:147" -======= - "id": 118429, - "nodeType": "ExpressionStatement", - "src": "3726:46:163" ->>>>>>> Stashed changes -======= - "id": 118429, - "nodeType": "ExpressionStatement", - "src": "3726:46:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86516, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86454, - "src": "3732:4:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118431, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118369, - "src": "3799:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118431, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118369, - "src": "3799:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86517, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86459, - "src": "3738:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118432, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118374, - "src": "3805:16:163", ->>>>>>> Stashed changes -======= - "id": 118432, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118374, - "src": "3805:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86518, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86461, - "src": "3756:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118433, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118376, - "src": "3823:15:163", ->>>>>>> Stashed changes -======= - "id": 118433, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118376, - "src": "3823:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86515, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87642, - "src": "3711:20:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$75202_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 86519, -<<<<<<< Updated upstream -======= -======= - "id": 118430, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119404, - "src": "3778:20:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 118434, ->>>>>>> Stashed changes -======= - "id": 118430, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119404, - "src": "3778:20:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 118434, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "3711:61:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3711:61:147", -======= - "src": "3778:61:163", ->>>>>>> Stashed changes -======= - "src": "3778:61:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86520, - "nodeType": "ExpressionStatement", - "src": "3711:61:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86520, - "nodeType": "ExpressionStatement", - "src": "3711:61:147" -======= - "id": 118435, - "nodeType": "ExpressionStatement", - "src": "3778:61:163" ->>>>>>> Stashed changes -======= - "id": 118435, - "nodeType": "ExpressionStatement", - "src": "3778:61:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "functionSelector": "d40ed58c", - "implemented": true, - "kind": "function", - "modifiers": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86464, - "kind": "modifierInvocation", - "modifierName": { - "id": 86463, - "name": "initializer", - "nameLocations": [ - "3295:11:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 70508, - "src": "3295:11:147" - }, - "nodeType": "ModifierInvocation", - "src": "3295:11:147" - } - ], - "name": "initialize", - "nameLocation": "3010:10:147", - "parameters": { - "id": 86462, -<<<<<<< Updated upstream -======= -======= - "id": 118379, - "kind": "modifierInvocation", - "modifierName": { - "id": 118378, - "name": "initializer", - "nameLocations": [ - "3362:11:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 101426, - "src": "3362:11:163" - }, - "nodeType": "ModifierInvocation", - "src": "3362:11:163" - } - ], - "name": "initialize", - "nameLocation": "3077:10:163", - "parameters": { - "id": 118377, ->>>>>>> Stashed changes -======= - "id": 118379, - "kind": "modifierInvocation", - "modifierName": { - "id": 118378, - "name": "initializer", - "nameLocations": [ - "3362:11:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 101426, - "src": "3362:11:163" - }, - "nodeType": "ModifierInvocation", - "src": "3362:11:163" - } - ], - "name": "initialize", - "nameLocation": "3077:10:163", - "parameters": { - "id": 118377, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86439, - "mutability": "mutable", - "name": "admin", - "nameLocation": "3034:5:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3026:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118354, - "mutability": "mutable", - "name": "admin", - "nameLocation": "3101:5:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3093:13:163", ->>>>>>> Stashed changes -======= - "id": 118354, - "mutability": "mutable", - "name": "admin", - "nameLocation": "3101:5:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3093:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86438, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3026:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118353, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3093:7:163", ->>>>>>> Stashed changes -======= - "id": 118353, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3093:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86442, - "mutability": "mutable", - "name": "operators", - "nameLocation": "3064:9:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3045:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 118357, - "mutability": "mutable", - "name": "operators", - "nameLocation": "3131:9:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3112:28:163", ->>>>>>> Stashed changes -======= - "id": 118357, - "mutability": "mutable", - "name": "operators", - "nameLocation": "3131:9:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3112:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86440, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3045:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118355, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3112:7:163", ->>>>>>> Stashed changes -======= - "id": 118355, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3112:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, -<<<<<<< Updated upstream - "id": 86441, - "nodeType": "ArrayTypeName", - "src": "3045:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86441, - "nodeType": "ArrayTypeName", - "src": "3045:9:147", -======= - "id": 118356, - "nodeType": "ArrayTypeName", - "src": "3112:9:163", ->>>>>>> Stashed changes -======= - "id": 118356, - "nodeType": "ArrayTypeName", - "src": "3112:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86446, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "3101:11:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3079:33:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118361, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "3168:11:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3146:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118361, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "3168:11:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3146:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86444, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86443, - "name": "RenewalFee", - "nameLocations": [ - "3079:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "3079:10:147" - }, - "referencedDeclaration": 91376, - "src": "3079:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 86445, - "nodeType": "ArrayTypeName", - "src": "3079:12:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118359, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118358, - "name": "RenewalFee", - "nameLocations": [ - "3146:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "3146:10:163" - }, - "referencedDeclaration": 123317, - "src": "3146:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118360, - "nodeType": "ArrayTypeName", - "src": "3146:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118359, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118358, - "name": "RenewalFee", - "nameLocations": [ - "3146:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "3146:10:163" - }, - "referencedDeclaration": 123317, - "src": "3146:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118360, - "nodeType": "ArrayTypeName", - "src": "3146:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86448, - "mutability": "mutable", - "name": "taxRatio", - "nameLocation": "3126:8:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3118:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118363, - "mutability": "mutable", - "name": "taxRatio", - "nameLocation": "3193:8:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3185:16:163", ->>>>>>> Stashed changes -======= - "id": 118363, - "mutability": "mutable", - "name": "taxRatio", - "nameLocation": "3193:8:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3185:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86447, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3118:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3185:7:163", ->>>>>>> Stashed changes -======= - "id": 118362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3185:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86451, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "3162:20:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3140:42:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 86450, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86449, - "name": "PeriodScaler", - "nameLocations": [ - "3140:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "3140:12:147" - }, - "referencedDeclaration": 93662, - "src": "3140:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118366, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "3229:20:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3207:42:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118365, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118364, - "name": "PeriodScaler", - "nameLocations": [ - "3207:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "3207:12:163" - }, - "referencedDeclaration": 125607, - "src": "3207:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118366, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "3229:20:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3207:42:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118365, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118364, - "name": "PeriodScaler", - "nameLocations": [ - "3207:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "3207:12:163" - }, - "referencedDeclaration": 125607, - "src": "3207:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86454, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3194:4:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3188:10:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 86453, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86452, - "name": "IPyth", - "nameLocations": [ - "3188:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75202, - "src": "3188:5:147" - }, - "referencedDeclaration": 75202, - "src": "3188:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118369, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3261:4:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3255:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118368, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118367, - "name": "IPyth", - "nameLocations": [ - "3255:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "3255:5:163" - }, - "referencedDeclaration": 106120, - "src": "3255:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118369, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3261:4:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3255:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118368, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118367, - "name": "IPyth", - "nameLocations": [ - "3255:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "3255:5:163" - }, - "referencedDeclaration": 106120, - "src": "3255:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86457, - "mutability": "mutable", - "name": "auction", - "nameLocation": "3215:7:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3204:18:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 86456, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86455, - "name": "INSAuction", - "nameLocations": [ - "3204:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91351, - "src": "3204:10:147" - }, - "referencedDeclaration": 91351, - "src": "3204:10:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", -<<<<<<< Updated upstream -======= -======= - "id": 118372, - "mutability": "mutable", - "name": "auction", - "nameLocation": "3282:7:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3271:18:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 118371, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118370, - "name": "INSAuction", - "nameLocations": [ - "3271:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123292, - "src": "3271:10:163" - }, - "referencedDeclaration": 123292, - "src": "3271:10:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes -======= - "id": 118372, - "mutability": "mutable", - "name": "auction", - "nameLocation": "3282:7:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3271:18:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 118371, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118370, - "name": "INSAuction", - "nameLocations": [ - "3271:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123292, - "src": "3271:10:163" - }, - "referencedDeclaration": 123292, - "src": "3271:10:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$123292", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract INSAuction" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86459, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3236:16:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3228:24:147", -<<<<<<< Updated upstream -======= -======= - "id": 118374, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3303:16:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3295:24:163", ->>>>>>> Stashed changes -======= - "id": 118374, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3303:16:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3295:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86458, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3228:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3295:7:163", ->>>>>>> Stashed changes -======= - "id": 118373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3295:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86461, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3266:15:147", - "nodeType": "VariableDeclaration", - "scope": 86522, - "src": "3258:23:147", -<<<<<<< Updated upstream -======= -======= - "id": 118376, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3333:15:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3325:23:163", ->>>>>>> Stashed changes -======= - "id": 118376, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3333:15:163", - "nodeType": "VariableDeclaration", - "scope": 118437, - "src": "3325:23:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86460, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3258:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118375, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3325:7:163", ->>>>>>> Stashed changes -======= - "id": 118375, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3325:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "3020:265:147" - }, - "returnParameters": { - "id": 86465, - "nodeType": "ParameterList", - "parameters": [], - "src": "3307:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "3087:265:163" - }, - "returnParameters": { - "id": 118380, - "nodeType": "ParameterList", - "parameters": [], - "src": "3374:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "3087:265:163" - }, - "returnParameters": { - "id": 118380, - "nodeType": "ParameterList", - "parameters": [], - "src": "3374:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86539, - "nodeType": "FunctionDefinition", - "src": "3825:179:147", - "nodes": [], - "body": { - "id": 86538, - "nodeType": "Block", - "src": "3942:62:147", -<<<<<<< Updated upstream -======= -======= - "id": 118454, - "nodeType": "FunctionDefinition", - "src": "3892:179:163", - "nodes": [], - "body": { - "id": 118453, - "nodeType": "Block", - "src": "4009:62:163", ->>>>>>> Stashed changes -======= - "id": 118454, - "nodeType": "FunctionDefinition", - "src": "3892:179:163", - "nodes": [], - "body": { - "id": 118453, - "nodeType": "Block", - "src": "4009:62:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "components": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86533, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86389, - "src": "3956:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118448, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "4023:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118448, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "4023:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86534, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86402, - "src": "3963:17:147", -<<<<<<< Updated upstream -======= -======= - "id": 118449, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "4030:17:163", ->>>>>>> Stashed changes -======= - "id": 118449, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "4030:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86535, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86405, - "src": "3982:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118450, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "4049:16:163", ->>>>>>> Stashed changes -======= - "id": 118450, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "4049:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream - "id": 86536, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86536, -======= - "id": 118451, ->>>>>>> Stashed changes -======= - "id": 118451, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "3955:44:147", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_contract$_IPyth_$75202_$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(contract IPyth,uint256,bytes32)" - } - }, - "functionReturnParameters": 86532, - "id": 86537, - "nodeType": "Return", - "src": "3948:51:147" -<<<<<<< Updated upstream -======= -======= - "src": "4022:44:163", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(contract IPyth,uint256,bytes32)" - } - }, - "functionReturnParameters": 118447, - "id": 118452, - "nodeType": "Return", - "src": "4015:51:163" ->>>>>>> Stashed changes -======= - "src": "4022:44:163", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$", - "typeString": "tuple(contract IPyth,uint256,bytes32)" - } - }, - "functionReturnParameters": 118447, - "id": 118452, - "nodeType": "Return", - "src": "4015:51:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91467 - ], - "documentation": { - "id": 86523, - "nodeType": "StructuredDocumentation", - "src": "3781:41:147", -<<<<<<< Updated upstream -======= -======= - 123409 - ], - "documentation": { - "id": 118438, - "nodeType": "StructuredDocumentation", - "src": "3848:41:163", ->>>>>>> Stashed changes -======= - 123409 - ], - "documentation": { - "id": 118438, - "nodeType": "StructuredDocumentation", - "src": "3848:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "2be09ecc", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPythOracleConfig", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "3834:19:147", - "parameters": { - "id": 86524, - "nodeType": "ParameterList", - "parameters": [], - "src": "3853:2:147" - }, - "returnParameters": { - "id": 86532, -<<<<<<< Updated upstream -======= -======= - "nameLocation": "3901:19:163", - "parameters": { - "id": 118439, - "nodeType": "ParameterList", - "parameters": [], - "src": "3920:2:163" - }, - "returnParameters": { - "id": 118447, ->>>>>>> Stashed changes -======= - "nameLocation": "3901:19:163", - "parameters": { - "id": 118439, - "nodeType": "ParameterList", - "parameters": [], - "src": "3920:2:163" - }, - "returnParameters": { - "id": 118447, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86527, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3885:4:147", - "nodeType": "VariableDeclaration", - "scope": 86539, - "src": "3879:10:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 86526, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86525, - "name": "IPyth", - "nameLocations": [ - "3879:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75202, - "src": "3879:5:147" - }, - "referencedDeclaration": 75202, - "src": "3879:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118442, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3952:4:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3946:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118441, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118440, - "name": "IPyth", - "nameLocations": [ - "3946:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "3946:5:163" - }, - "referencedDeclaration": 106120, - "src": "3946:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118442, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "3952:4:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3946:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118441, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118440, - "name": "IPyth", - "nameLocations": [ - "3946:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "3946:5:163" - }, - "referencedDeclaration": 106120, - "src": "3946:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86529, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3899:16:147", - "nodeType": "VariableDeclaration", - "scope": 86539, - "src": "3891:24:147", -<<<<<<< Updated upstream -======= -======= - "id": 118444, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3966:16:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3958:24:163", ->>>>>>> Stashed changes -======= - "id": 118444, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "3966:16:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3958:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86528, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3891:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118443, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3958:7:163", ->>>>>>> Stashed changes -======= - "id": 118443, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3958:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86531, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3925:15:147", - "nodeType": "VariableDeclaration", - "scope": 86539, - "src": "3917:23:147", -<<<<<<< Updated upstream -======= -======= - "id": 118446, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3992:15:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3984:23:163", ->>>>>>> Stashed changes -======= - "id": 118446, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "3992:15:163", - "nodeType": "VariableDeclaration", - "scope": 118454, - "src": "3984:23:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86530, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3917:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118445, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3984:7:163", ->>>>>>> Stashed changes -======= - "id": 118445, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3984:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "3878:63:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "3878:63:147" - }, - "scope": 87685, -======= - "src": "3945:63:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "3945:63:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86560, - "nodeType": "FunctionDefinition", - "src": "4052:212:147", - "nodes": [], - "body": { - "id": 86559, - "nodeType": "Block", - "src": "4192:72:147", -<<<<<<< Updated upstream -======= -======= - "id": 118475, - "nodeType": "FunctionDefinition", - "src": "4119:212:163", - "nodes": [], - "body": { - "id": 118474, - "nodeType": "Block", - "src": "4259:72:163", ->>>>>>> Stashed changes -======= - "id": 118475, - "nodeType": "FunctionDefinition", - "src": "4119:212:163", - "nodes": [], - "body": { - "id": 118474, - "nodeType": "Block", - "src": "4259:72:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86554, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86543, - "src": "4219:4:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118469, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118458, - "src": "4286:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118469, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118458, - "src": "4286:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86555, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86545, - "src": "4225:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118470, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118460, - "src": "4292:16:163", ->>>>>>> Stashed changes -======= - "id": 118470, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118460, - "src": "4292:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86556, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86547, - "src": "4243:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118471, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118462, - "src": "4310:15:163", ->>>>>>> Stashed changes -======= - "id": 118471, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118462, - "src": "4310:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86553, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87642, - "src": "4198:20:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$75202_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 86557, -<<<<<<< Updated upstream -======= -======= - "id": 118468, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119404, - "src": "4265:20:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 118472, ->>>>>>> Stashed changes -======= - "id": 118468, - "name": "_setPythOracleConfig", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119404, - "src": "4265:20:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (contract IPyth,uint256,bytes32)" - } - }, - "id": 118472, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "4198:61:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4198:61:147", -======= - "src": "4265:61:163", ->>>>>>> Stashed changes -======= - "src": "4265:61:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86558, - "nodeType": "ExpressionStatement", - "src": "4198:61:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86558, - "nodeType": "ExpressionStatement", - "src": "4198:61:147" -======= - "id": 118473, - "nodeType": "ExpressionStatement", - "src": "4265:61:163" ->>>>>>> Stashed changes -======= - "id": 118473, - "nodeType": "ExpressionStatement", - "src": "4265:61:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91478 - ], - "documentation": { - "id": 86540, - "nodeType": "StructuredDocumentation", - "src": "4008:41:147", -<<<<<<< Updated upstream -======= -======= - 123420 - ], - "documentation": { - "id": 118455, - "nodeType": "StructuredDocumentation", - "src": "4075:41:163", ->>>>>>> Stashed changes -======= - 123420 - ], - "documentation": { - "id": 118455, - "nodeType": "StructuredDocumentation", - "src": "4075:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "28dd3065", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86550, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68920, - "src": "4170:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118465, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "4237:18:163", ->>>>>>> Stashed changes -======= - "id": 118465, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "4237:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86551, - "kind": "modifierInvocation", - "modifierName": { - "id": 86549, - "name": "onlyRole", - "nameLocations": [ - "4161:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "4161:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "4161:28:147" - } - ], - "name": "setPythOracleConfig", - "nameLocation": "4061:19:147", - "parameters": { - "id": 86548, -<<<<<<< Updated upstream -======= -======= - "id": 118466, - "kind": "modifierInvocation", - "modifierName": { - "id": 118464, - "name": "onlyRole", - "nameLocations": [ - "4228:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "4228:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "4228:28:163" - } - ], - "name": "setPythOracleConfig", - "nameLocation": "4128:19:163", - "parameters": { - "id": 118463, ->>>>>>> Stashed changes -======= - "id": 118466, - "kind": "modifierInvocation", - "modifierName": { - "id": 118464, - "name": "onlyRole", - "nameLocations": [ - "4228:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "4228:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "4228:28:163" - } - ], - "name": "setPythOracleConfig", - "nameLocation": "4128:19:163", - "parameters": { - "id": 118463, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86543, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "4087:4:147", - "nodeType": "VariableDeclaration", - "scope": 86560, - "src": "4081:10:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 86542, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86541, - "name": "IPyth", - "nameLocations": [ - "4081:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75202, - "src": "4081:5:147" - }, - "referencedDeclaration": 75202, - "src": "4081:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 118458, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "4154:4:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4148:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118457, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118456, - "name": "IPyth", - "nameLocations": [ - "4148:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "4148:5:163" - }, - "referencedDeclaration": 106120, - "src": "4148:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 118458, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "4154:4:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4148:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 118457, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118456, - "name": "IPyth", - "nameLocations": [ - "4148:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "4148:5:163" - }, - "referencedDeclaration": 106120, - "src": "4148:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86545, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "4101:16:147", - "nodeType": "VariableDeclaration", - "scope": 86560, - "src": "4093:24:147", -<<<<<<< Updated upstream -======= -======= - "id": 118460, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "4168:16:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4160:24:163", ->>>>>>> Stashed changes -======= - "id": 118460, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "4168:16:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4160:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86544, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4093:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118459, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4160:7:163", ->>>>>>> Stashed changes -======= - "id": 118459, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4160:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86547, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "4127:15:147", - "nodeType": "VariableDeclaration", - "scope": 86560, - "src": "4119:23:147", -<<<<<<< Updated upstream -======= -======= - "id": 118462, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "4194:15:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4186:23:163", ->>>>>>> Stashed changes -======= - "id": 118462, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "4194:15:163", - "nodeType": "VariableDeclaration", - "scope": 118475, - "src": "4186:23:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86546, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4119:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118461, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4186:7:163", ->>>>>>> Stashed changes -======= - "id": 118461, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4186:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4080:63:147" - }, - "returnParameters": { - "id": 86552, - "nodeType": "ParameterList", - "parameters": [], - "src": "4192:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "4147:63:163" - }, - "returnParameters": { - "id": 118467, - "nodeType": "ParameterList", - "parameters": [], - "src": "4259:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "4147:63:163" - }, - "returnParameters": { - "id": 118467, - "nodeType": "ParameterList", - "parameters": [], - "src": "4259:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86619, - "nodeType": "FunctionDefinition", - "src": "4312:396:147", - "nodes": [], - "body": { - "id": 86618, - "nodeType": "Block", - "src": "4402:306:147", -<<<<<<< Updated upstream -======= -======= - "id": 118534, - "nodeType": "FunctionDefinition", - "src": "4379:396:163", - "nodes": [], - "body": { - "id": 118533, - "nodeType": "Block", - "src": "4469:306:163", ->>>>>>> Stashed changes -======= - "id": 118534, - "nodeType": "FunctionDefinition", - "src": "4379:396:163", - "nodes": [], - "body": { - "id": 118533, - "nodeType": "Block", - "src": "4469:306:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86569 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86569 -======= - 118484 ->>>>>>> Stashed changes -======= - 118484 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86569, - "mutability": "mutable", - "name": "rnfMaxLength", - "nameLocation": "4416:12:147", - "nodeType": "VariableDeclaration", - "scope": 86618, - "src": "4408:20:147", -<<<<<<< Updated upstream -======= -======= - "id": 118484, - "mutability": "mutable", - "name": "rnfMaxLength", - "nameLocation": "4483:12:163", - "nodeType": "VariableDeclaration", - "scope": 118533, - "src": "4475:20:163", ->>>>>>> Stashed changes -======= - "id": 118484, - "mutability": "mutable", - "name": "rnfMaxLength", - "nameLocation": "4483:12:163", - "nodeType": "VariableDeclaration", - "scope": 118533, - "src": "4475:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86568, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4408:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4475:7:163", ->>>>>>> Stashed changes -======= - "id": 118483, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4475:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86571, - "initialValue": { - "id": 86570, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "4431:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118486, - "initialValue": { - "id": 118485, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "4498:13:163", ->>>>>>> Stashed changes -======= - "id": 118486, - "initialValue": { - "id": 118485, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "4498:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4408:36:147" - }, - { - "expression": { - "id": 86579, -<<<<<<< Updated upstream -======= -======= - "src": "4475:36:163" - }, - { - "expression": { - "id": 118494, ->>>>>>> Stashed changes -======= - "src": "4475:36:163" - }, - { - "expression": { - "id": 118494, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86572, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86566, - "src": "4450:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118487, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4517:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", ->>>>>>> Stashed changes -======= - "id": 118487, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4517:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86577, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86569, - "src": "4481:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 118492, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118484, - "src": "4548:12:163", ->>>>>>> Stashed changes -======= - "id": 118492, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118484, - "src": "4548:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream - "id": 86576, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86576, -======= - "id": 118491, ->>>>>>> Stashed changes -======= - "id": 118491, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", -<<<<<<< Updated upstream - "src": "4464:16:147", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr_$", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4464:16:147", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr_$", -======= - "src": "4531:16:163", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr_$", ->>>>>>> Stashed changes -======= - "src": "4531:16:163", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr_$", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "function (uint256) pure returns (struct INSDomainPrice.RenewalFee memory[] memory)" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86574, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86573, - "name": "RenewalFee", - "nameLocations": [ - "4468:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "4468:10:147" - }, - "referencedDeclaration": 91376, - "src": "4468:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 86575, - "nodeType": "ArrayTypeName", - "src": "4468:12:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118489, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118488, - "name": "RenewalFee", - "nameLocations": [ - "4535:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4535:10:163" - }, - "referencedDeclaration": 123317, - "src": "4535:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118490, - "nodeType": "ArrayTypeName", - "src": "4535:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118489, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118488, - "name": "RenewalFee", - "nameLocations": [ - "4535:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4535:10:163" - }, - "referencedDeclaration": 123317, - "src": "4535:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118490, - "nodeType": "ArrayTypeName", - "src": "4535:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - } - }, -<<<<<<< Updated upstream - "id": 86578, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86578, -======= - "id": 118493, ->>>>>>> Stashed changes -======= - "id": 118493, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4464:30:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "src": "4450:44:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 86580, - "nodeType": "ExpressionStatement", - "src": "4450:44:147" - }, - { - "assignments": [ - 86582 -<<<<<<< Updated upstream -======= -======= - "src": "4531:30:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "src": "4517:44:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118495, - "nodeType": "ExpressionStatement", - "src": "4517:44:163" - }, - { - "assignments": [ - 118497 ->>>>>>> Stashed changes -======= - "src": "4531:30:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "src": "4517:44:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118495, - "nodeType": "ExpressionStatement", - "src": "4517:44:163" - }, - { - "assignments": [ - 118497 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86582, - "mutability": "mutable", - "name": "len", - "nameLocation": "4508:3:147", - "nodeType": "VariableDeclaration", - "scope": 86618, - "src": "4500:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118497, - "mutability": "mutable", - "name": "len", - "nameLocation": "4575:3:163", - "nodeType": "VariableDeclaration", - "scope": 118533, - "src": "4567:11:163", ->>>>>>> Stashed changes -======= - "id": 118497, - "mutability": "mutable", - "name": "len", - "nameLocation": "4575:3:163", - "nodeType": "VariableDeclaration", - "scope": 118533, - "src": "4567:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86581, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4500:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4567:7:163", ->>>>>>> Stashed changes -======= - "id": 118496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4567:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86583, - "nodeType": "VariableDeclarationStatement", - "src": "4500:11:147" - }, - { - "body": { - "id": 86616, - "nodeType": "Block", - "src": "4553:151:147", - "statements": [ - { - "id": 86615, - "nodeType": "UncheckedBlock", - "src": "4561:137:147", - "statements": [ - { - "expression": { - "id": 86594, -<<<<<<< Updated upstream -======= -======= - "id": 118498, - "nodeType": "VariableDeclarationStatement", - "src": "4567:11:163" - }, - { - "body": { - "id": 118531, - "nodeType": "Block", - "src": "4620:151:163", - "statements": [ - { - "id": 118530, - "nodeType": "UncheckedBlock", - "src": "4628:137:163", - "statements": [ - { - "expression": { - "id": 118509, ->>>>>>> Stashed changes -======= - "id": 118498, - "nodeType": "VariableDeclarationStatement", - "src": "4567:11:163" - }, - { - "body": { - "id": 118531, - "nodeType": "Block", - "src": "4620:151:163", - "statements": [ - { - "id": 118530, - "nodeType": "UncheckedBlock", - "src": "4628:137:163", - "statements": [ - { - "expression": { - "id": 118509, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86590, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86582, - "src": "4581:3:147", -<<<<<<< Updated upstream -======= -======= - "id": 118505, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4648:3:163", ->>>>>>> Stashed changes -======= - "id": 118505, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4648:3:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86593, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86593, -======= - "id": 118508, ->>>>>>> Stashed changes -======= - "id": 118508, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86591, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86585, - "src": "4587:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118506, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4654:1:163", ->>>>>>> Stashed changes -======= - "id": 118506, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4654:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", -<<<<<<< Updated upstream - "id": 86592, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86592, -======= - "id": 118507, ->>>>>>> Stashed changes -======= - "id": 118507, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "4591:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4591:1:147", -======= - "src": "4658:1:163", ->>>>>>> Stashed changes -======= - "src": "4658:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, -<<<<<<< Updated upstream - "src": "4587:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4587:5:147", -======= - "src": "4654:5:163", ->>>>>>> Stashed changes -======= - "src": "4654:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "4581:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4581:11:147", -======= - "src": "4648:11:163", ->>>>>>> Stashed changes -======= - "src": "4648:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86595, - "nodeType": "ExpressionStatement", - "src": "4581:11:147" - }, - { - "expression": { - "id": 86601, -<<<<<<< Updated upstream -======= -======= - "id": 118510, - "nodeType": "ExpressionStatement", - "src": "4648:11:163" - }, - { - "expression": { - "id": 118516, ->>>>>>> Stashed changes -======= - "id": 118510, - "nodeType": "ExpressionStatement", - "src": "4648:11:163" - }, - { - "expression": { - "id": 118516, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86596, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86566, - "src": "4602:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 86598, - "indexExpression": { - "id": 86597, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86585, - "src": "4614:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118511, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4669:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118513, - "indexExpression": { - "id": 118512, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4681:1:163", ->>>>>>> Stashed changes -======= - "id": 118511, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4669:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118513, - "indexExpression": { - "id": 118512, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4681:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4602:14:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 86599, -<<<<<<< Updated upstream -======= -======= - "src": "4669:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 118514, ->>>>>>> Stashed changes -======= - "src": "4669:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 118514, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "4617:11:147", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 91373, - "src": "4602:26:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "4684:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "4669:26:163", ->>>>>>> Stashed changes -======= - "memberLocation": "4684:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "4669:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86600, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86582, - "src": "4631:3:147", -<<<<<<< Updated upstream -======= -======= - "id": 118515, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4698:3:163", ->>>>>>> Stashed changes -======= - "id": 118515, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4698:3:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "4602:32:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4602:32:147", -======= - "src": "4669:32:163", ->>>>>>> Stashed changes -======= - "src": "4669:32:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86602, - "nodeType": "ExpressionStatement", - "src": "4602:32:147" - }, - { - "expression": { - "id": 86610, -<<<<<<< Updated upstream -======= -======= - "id": 118517, - "nodeType": "ExpressionStatement", - "src": "4669:32:163" - }, - { - "expression": { - "id": 118525, ->>>>>>> Stashed changes -======= - "id": 118517, - "nodeType": "ExpressionStatement", - "src": "4669:32:163" - }, - { - "expression": { - "id": 118525, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86603, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86566, - "src": "4644:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 86605, - "indexExpression": { - "id": 86604, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86585, - "src": "4656:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118518, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4711:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118520, - "indexExpression": { - "id": 118519, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4723:1:163", ->>>>>>> Stashed changes -======= - "id": 118518, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118481, - "src": "4711:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" - } - }, - "id": 118520, - "indexExpression": { - "id": 118519, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4723:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4644:14:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 86606, -<<<<<<< Updated upstream -======= -======= - "src": "4711:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 118521, ->>>>>>> Stashed changes -======= - "src": "4711:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 118521, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "4659:3:147", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 91375, - "src": "4644:18:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "4726:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "4711:18:163", ->>>>>>> Stashed changes -======= - "memberLocation": "4726:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "4711:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86607, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86414, - "src": "4665:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118522, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118329, - "src": "4732:6:163", ->>>>>>> Stashed changes -======= - "id": 118522, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118329, - "src": "4732:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86609, - "indexExpression": { - "id": 86608, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86582, - "src": "4672:3:147", -<<<<<<< Updated upstream -======= -======= - "id": 118524, - "indexExpression": { - "id": 118523, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4739:3:163", ->>>>>>> Stashed changes -======= - "id": 118524, - "indexExpression": { - "id": 118523, - "name": "len", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118497, - "src": "4739:3:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "4665:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4665:11:147", -======= - "src": "4732:11:163", ->>>>>>> Stashed changes -======= - "src": "4732:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "4644:32:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4644:32:147", -======= - "src": "4711:32:163", ->>>>>>> Stashed changes -======= - "src": "4711:32:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86611, - "nodeType": "ExpressionStatement", - "src": "4644:32:147" - }, - { - "expression": { - "id": 86613, -<<<<<<< Updated upstream -======= -======= - "id": 118526, - "nodeType": "ExpressionStatement", - "src": "4711:32:163" - }, - { - "expression": { - "id": 118528, ->>>>>>> Stashed changes -======= - "id": 118526, - "nodeType": "ExpressionStatement", - "src": "4711:32:163" - }, - { - "expression": { - "id": 118528, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4686:3:147", - "subExpression": { - "id": 86612, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86585, - "src": "4688:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "4753:3:163", - "subExpression": { - "id": 118527, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4755:1:163", ->>>>>>> Stashed changes -======= - "src": "4753:3:163", - "subExpression": { - "id": 118527, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4755:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86614, - "nodeType": "ExpressionStatement", - "src": "4686:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86614, - "nodeType": "ExpressionStatement", - "src": "4686:3:147" -======= - "id": 118529, - "nodeType": "ExpressionStatement", - "src": "4753:3:163" ->>>>>>> Stashed changes -======= - "id": 118529, - "nodeType": "ExpressionStatement", - "src": "4753:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86589, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86589, -======= - "id": 118504, ->>>>>>> Stashed changes -======= - "id": 118504, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86587, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86585, - "src": "4534:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118502, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4601:1:163", ->>>>>>> Stashed changes -======= - "id": 118502, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118500, - "src": "4601:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86588, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86569, - "src": "4538:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 118503, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118484, - "src": "4605:12:163", ->>>>>>> Stashed changes -======= - "id": 118503, - "name": "rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118484, - "src": "4605:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "4534:16:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4534:16:147", -======= - "src": "4601:16:163", ->>>>>>> Stashed changes -======= - "src": "4601:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86617, - "initializationExpression": { - "assignments": [ - 86585 -<<<<<<< Updated upstream -======= -======= - "id": 118532, - "initializationExpression": { - "assignments": [ - 118500 ->>>>>>> Stashed changes -======= - "id": 118532, - "initializationExpression": { - "assignments": [ - 118500 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86585, - "mutability": "mutable", - "name": "i", - "nameLocation": "4531:1:147", - "nodeType": "VariableDeclaration", - "scope": 86617, - "src": "4523:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118500, - "mutability": "mutable", - "name": "i", - "nameLocation": "4598:1:163", - "nodeType": "VariableDeclaration", - "scope": 118532, - "src": "4590:9:163", ->>>>>>> Stashed changes -======= - "id": 118500, - "mutability": "mutable", - "name": "i", - "nameLocation": "4598:1:163", - "nodeType": "VariableDeclaration", - "scope": 118532, - "src": "4590:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86584, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4523:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4590:7:163", ->>>>>>> Stashed changes -======= - "id": 118499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4590:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86586, - "nodeType": "VariableDeclarationStatement", - "src": "4523:9:147" - }, - "nodeType": "ForStatement", - "src": "4518:186:147" -<<<<<<< Updated upstream -======= -======= - "id": 118501, - "nodeType": "VariableDeclarationStatement", - "src": "4590:9:163" - }, - "nodeType": "ForStatement", - "src": "4585:186:163" ->>>>>>> Stashed changes -======= - "id": 118501, - "nodeType": "VariableDeclarationStatement", - "src": "4590:9:163" - }, - "nodeType": "ForStatement", - "src": "4585:186:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91500 - ], - "documentation": { - "id": 86561, - "nodeType": "StructuredDocumentation", - "src": "4268:41:147", -<<<<<<< Updated upstream -======= -======= - 123442 - ], - "documentation": { - "id": 118476, - "nodeType": "StructuredDocumentation", - "src": "4335:41:163", ->>>>>>> Stashed changes -======= - 123442 - ], - "documentation": { - "id": 118476, - "nodeType": "StructuredDocumentation", - "src": "4335:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "0a44f51f", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getRenewalFeeByLengths", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "4321:22:147", - "parameters": { - "id": 86562, - "nodeType": "ParameterList", - "parameters": [], - "src": "4343:2:147" - }, - "returnParameters": { - "id": 86567, -<<<<<<< Updated upstream -======= -======= - "nameLocation": "4388:22:163", - "parameters": { - "id": 118477, - "nodeType": "ParameterList", - "parameters": [], - "src": "4410:2:163" - }, - "returnParameters": { - "id": 118482, ->>>>>>> Stashed changes -======= - "nameLocation": "4388:22:163", - "parameters": { - "id": 118477, - "nodeType": "ParameterList", - "parameters": [], - "src": "4410:2:163" - }, - "returnParameters": { - "id": 118482, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86566, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4389:11:147", - "nodeType": "VariableDeclaration", - "scope": 86619, - "src": "4369:31:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118481, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4456:11:163", - "nodeType": "VariableDeclaration", - "scope": 118534, - "src": "4436:31:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", ->>>>>>> Stashed changes -======= - "id": 118481, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4456:11:163", - "nodeType": "VariableDeclaration", - "scope": 118534, - "src": "4436:31:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86564, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86563, - "name": "RenewalFee", - "nameLocations": [ - "4369:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "4369:10:147" - }, - "referencedDeclaration": 91376, - "src": "4369:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 86565, - "nodeType": "ArrayTypeName", - "src": "4369:12:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118479, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118478, - "name": "RenewalFee", - "nameLocations": [ - "4436:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4436:10:163" - }, - "referencedDeclaration": 123317, - "src": "4436:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118480, - "nodeType": "ArrayTypeName", - "src": "4436:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118479, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118478, - "name": "RenewalFee", - "nameLocations": [ - "4436:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4436:10:163" - }, - "referencedDeclaration": 123317, - "src": "4436:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118480, - "nodeType": "ArrayTypeName", - "src": "4436:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "4368:33:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4368:33:147" - }, - "scope": 87685, -======= - "src": "4435:33:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "4435:33:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86635, - "nodeType": "FunctionDefinition", - "src": "4756:152:147", - "nodes": [], - "body": { - "id": 86634, - "nodeType": "Block", - "src": "4861:47:147", -<<<<<<< Updated upstream -======= -======= - "id": 118550, - "nodeType": "FunctionDefinition", - "src": "4823:152:163", - "nodes": [], - "body": { - "id": 118549, - "nodeType": "Block", - "src": "4928:47:163", ->>>>>>> Stashed changes -======= - "id": 118550, - "nodeType": "FunctionDefinition", - "src": "4823:152:163", - "nodes": [], - "body": { - "id": 118549, - "nodeType": "Block", - "src": "4928:47:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86631, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86624, - "src": "4891:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118546, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118539, - "src": "4958:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118546, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118539, - "src": "4958:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 86630, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87610, - "src": "4867:23:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 86632, -<<<<<<< Updated upstream -======= -======= - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 118545, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119372, - "src": "4934:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 118547, ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - ], - "id": 118545, - "name": "_setRenewalFeeByLengths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119372, - "src": "4934:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" - } - }, - "id": 118547, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "4867:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "4867:36:147", -======= - "src": "4934:36:163", ->>>>>>> Stashed changes -======= - "src": "4934:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86633, - "nodeType": "ExpressionStatement", - "src": "4867:36:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86633, - "nodeType": "ExpressionStatement", - "src": "4867:36:147" -======= - "id": 118548, - "nodeType": "ExpressionStatement", - "src": "4934:36:163" ->>>>>>> Stashed changes -======= - "id": 118548, - "nodeType": "ExpressionStatement", - "src": "4934:36:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91508 - ], - "documentation": { - "id": 86620, - "nodeType": "StructuredDocumentation", - "src": "4712:41:147", -<<<<<<< Updated upstream -======= -======= - 123450 - ], - "documentation": { - "id": 118535, - "nodeType": "StructuredDocumentation", - "src": "4779:41:163", ->>>>>>> Stashed changes -======= - 123450 - ], - "documentation": { - "id": 118535, - "nodeType": "StructuredDocumentation", - "src": "4779:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "35feb741", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86627, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68920, - "src": "4841:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118542, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "4908:18:163", ->>>>>>> Stashed changes -======= - "id": 118542, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "4908:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86628, - "kind": "modifierInvocation", - "modifierName": { - "id": 86626, - "name": "onlyRole", - "nameLocations": [ - "4832:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "4832:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "4832:28:147" - } - ], - "name": "setRenewalFeeByLengths", - "nameLocation": "4765:22:147", - "parameters": { - "id": 86625, -<<<<<<< Updated upstream -======= -======= - "id": 118543, - "kind": "modifierInvocation", - "modifierName": { - "id": 118541, - "name": "onlyRole", - "nameLocations": [ - "4899:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "4899:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "4899:28:163" - } - ], - "name": "setRenewalFeeByLengths", - "nameLocation": "4832:22:163", - "parameters": { - "id": 118540, ->>>>>>> Stashed changes -======= - "id": 118543, - "kind": "modifierInvocation", - "modifierName": { - "id": 118541, - "name": "onlyRole", - "nameLocations": [ - "4899:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "4899:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "4899:28:163" - } - ], - "name": "setRenewalFeeByLengths", - "nameLocation": "4832:22:163", - "parameters": { - "id": 118540, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86624, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4810:11:147", - "nodeType": "VariableDeclaration", - "scope": 86635, - "src": "4788:33:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118539, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4877:11:163", - "nodeType": "VariableDeclaration", - "scope": 118550, - "src": "4855:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118539, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "4877:11:163", - "nodeType": "VariableDeclaration", - "scope": 118550, - "src": "4855:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86622, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86621, - "name": "RenewalFee", - "nameLocations": [ - "4788:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "4788:10:147" - }, - "referencedDeclaration": 91376, - "src": "4788:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 86623, - "nodeType": "ArrayTypeName", - "src": "4788:12:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118537, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118536, - "name": "RenewalFee", - "nameLocations": [ - "4855:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4855:10:163" - }, - "referencedDeclaration": 123317, - "src": "4855:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118538, - "nodeType": "ArrayTypeName", - "src": "4855:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118537, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118536, - "name": "RenewalFee", - "nameLocations": [ - "4855:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "4855:10:163" - }, - "referencedDeclaration": 123317, - "src": "4855:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 118538, - "nodeType": "ArrayTypeName", - "src": "4855:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "4787:35:147" - }, - "returnParameters": { - "id": 86629, - "nodeType": "ParameterList", - "parameters": [], - "src": "4861:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "4854:35:163" - }, - "returnParameters": { - "id": 118544, - "nodeType": "ParameterList", - "parameters": [], - "src": "4928:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "4854:35:163" - }, - "returnParameters": { - "id": 118544, - "nodeType": "ParameterList", - "parameters": [], - "src": "4928:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86644, - "nodeType": "FunctionDefinition", - "src": "4956:88:147", - "nodes": [], - "body": { - "id": 86643, - "nodeType": "Block", - "src": "5017:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118559, - "nodeType": "FunctionDefinition", - "src": "5023:88:163", - "nodes": [], - "body": { - "id": 118558, - "nodeType": "Block", - "src": "5084:27:163", ->>>>>>> Stashed changes -======= - "id": 118559, - "nodeType": "FunctionDefinition", - "src": "5023:88:163", - "nodes": [], - "body": { - "id": 118558, - "nodeType": "Block", - "src": "5084:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86641, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86396, - "src": "5030:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118556, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118311, - "src": "5097:9:163", ->>>>>>> Stashed changes -======= - "id": 118556, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118311, - "src": "5097:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 86640, - "id": 86642, - "nodeType": "Return", - "src": "5023:16:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 118555, - "id": 118557, - "nodeType": "Return", - "src": "5090:16:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 118555, - "id": 118557, - "nodeType": "Return", - "src": "5090:16:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91514 - ], - "documentation": { - "id": 86636, - "nodeType": "StructuredDocumentation", - "src": "4912:41:147", -<<<<<<< Updated upstream -======= -======= - 123456 - ], - "documentation": { - "id": 118551, - "nodeType": "StructuredDocumentation", - "src": "4979:41:163", ->>>>>>> Stashed changes -======= - 123456 - ], - "documentation": { - "id": 118551, - "nodeType": "StructuredDocumentation", - "src": "4979:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "5ef32e2c", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getTaxRatio", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "4965:11:147", - "parameters": { - "id": 86637, - "nodeType": "ParameterList", - "parameters": [], - "src": "4976:2:147" - }, - "returnParameters": { - "id": 86640, -<<<<<<< Updated upstream -======= -======= - "nameLocation": "5032:11:163", - "parameters": { - "id": 118552, - "nodeType": "ParameterList", - "parameters": [], - "src": "5043:2:163" - }, - "returnParameters": { - "id": 118555, ->>>>>>> Stashed changes -======= - "nameLocation": "5032:11:163", - "parameters": { - "id": 118552, - "nodeType": "ParameterList", - "parameters": [], - "src": "5043:2:163" - }, - "returnParameters": { - "id": 118555, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86639, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5010:5:147", - "nodeType": "VariableDeclaration", - "scope": 86644, - "src": "5002:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118554, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5077:5:163", - "nodeType": "VariableDeclaration", - "scope": 118559, - "src": "5069:13:163", ->>>>>>> Stashed changes -======= - "id": 118554, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5077:5:163", - "nodeType": "VariableDeclaration", - "scope": 118559, - "src": "5069:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86638, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5002:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118553, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5069:7:163", ->>>>>>> Stashed changes -======= - "id": 118553, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5069:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "5001:15:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5001:15:147" - }, - "scope": 87685, -======= - "src": "5068:15:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "5068:15:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86658, - "nodeType": "FunctionDefinition", - "src": "5092:104:147", - "nodes": [], - "body": { - "id": 86657, - "nodeType": "Block", - "src": "5166:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118573, - "nodeType": "FunctionDefinition", - "src": "5159:104:163", - "nodes": [], - "body": { - "id": 118572, - "nodeType": "Block", - "src": "5233:30:163", ->>>>>>> Stashed changes -======= - "id": 118573, - "nodeType": "FunctionDefinition", - "src": "5159:104:163", - "nodes": [], - "body": { - "id": 118572, - "nodeType": "Block", - "src": "5233:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86654, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86647, - "src": "5185:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118569, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118562, - "src": "5252:5:163", ->>>>>>> Stashed changes -======= - "id": 118569, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118562, - "src": "5252:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86653, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87505, - "src": "5172:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 118568, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119267, - "src": "5239:12:163", ->>>>>>> Stashed changes -======= - "id": 118568, - "name": "_setTaxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119267, - "src": "5239:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86655, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86655, -======= - "id": 118570, ->>>>>>> Stashed changes -======= - "id": 118570, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "5172:19:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5172:19:147", -======= - "src": "5239:19:163", ->>>>>>> Stashed changes -======= - "src": "5239:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86656, - "nodeType": "ExpressionStatement", - "src": "5172:19:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86656, - "nodeType": "ExpressionStatement", - "src": "5172:19:147" -======= - "id": 118571, - "nodeType": "ExpressionStatement", - "src": "5239:19:163" ->>>>>>> Stashed changes -======= - "id": 118571, - "nodeType": "ExpressionStatement", - "src": "5239:19:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91520 - ], - "documentation": { - "id": 86645, - "nodeType": "StructuredDocumentation", - "src": "5048:41:147", -<<<<<<< Updated upstream -======= -======= - 123462 - ], - "documentation": { - "id": 118560, - "nodeType": "StructuredDocumentation", - "src": "5115:41:163", ->>>>>>> Stashed changes -======= - 123462 - ], - "documentation": { - "id": 118560, - "nodeType": "StructuredDocumentation", - "src": "5115:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "fe303ebf", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86650, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68920, - "src": "5146:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118565, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "5213:18:163", ->>>>>>> Stashed changes -======= - "id": 118565, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "5213:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86651, - "kind": "modifierInvocation", - "modifierName": { - "id": 86649, - "name": "onlyRole", - "nameLocations": [ - "5137:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "5137:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "5137:28:147" - } - ], - "name": "setTaxRatio", - "nameLocation": "5101:11:147", - "parameters": { - "id": 86648, -<<<<<<< Updated upstream -======= -======= - "id": 118566, - "kind": "modifierInvocation", - "modifierName": { - "id": 118564, - "name": "onlyRole", - "nameLocations": [ - "5204:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "5204:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "5204:28:163" - } - ], - "name": "setTaxRatio", - "nameLocation": "5168:11:163", - "parameters": { - "id": 118563, ->>>>>>> Stashed changes -======= - "id": 118566, - "kind": "modifierInvocation", - "modifierName": { - "id": 118564, - "name": "onlyRole", - "nameLocations": [ - "5204:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "5204:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "5204:28:163" - } - ], - "name": "setTaxRatio", - "nameLocation": "5168:11:163", - "parameters": { - "id": 118563, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86647, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5121:5:147", - "nodeType": "VariableDeclaration", - "scope": 86658, - "src": "5113:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118562, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5188:5:163", - "nodeType": "VariableDeclaration", - "scope": 118573, - "src": "5180:13:163", ->>>>>>> Stashed changes -======= - "id": 118562, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "5188:5:163", - "nodeType": "VariableDeclaration", - "scope": 118573, - "src": "5180:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86646, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5113:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5180:7:163", ->>>>>>> Stashed changes -======= - "id": 118561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5180:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "5112:15:147" - }, - "returnParameters": { - "id": 86652, - "nodeType": "ParameterList", - "parameters": [], - "src": "5166:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "5179:15:163" - }, - "returnParameters": { - "id": 118567, - "nodeType": "ParameterList", - "parameters": [], - "src": "5233:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "5179:15:163" - }, - "returnParameters": { - "id": 118567, - "nodeType": "ParameterList", - "parameters": [], - "src": "5233:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86668, - "nodeType": "FunctionDefinition", - "src": "5244:127:147", - "nodes": [], - "body": { - "id": 86667, - "nodeType": "Block", - "src": "5340:31:147", -<<<<<<< Updated upstream -======= -======= - "id": 118583, - "nodeType": "FunctionDefinition", - "src": "5311:127:163", - "nodes": [], - "body": { - "id": 118582, - "nodeType": "Block", - "src": "5407:31:163", ->>>>>>> Stashed changes -======= - "id": 118583, - "nodeType": "FunctionDefinition", - "src": "5311:127:163", - "nodes": [], - "body": { - "id": 118582, - "nodeType": "Block", - "src": "5407:31:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86665, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86409, - "src": "5353:13:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "functionReturnParameters": 86664, - "id": 86666, - "nodeType": "Return", - "src": "5346:20:147" -<<<<<<< Updated upstream -======= -======= - "id": 118580, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "5420:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "functionReturnParameters": 118579, - "id": 118581, - "nodeType": "Return", - "src": "5413:20:163" ->>>>>>> Stashed changes -======= - "id": 118580, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "5420:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "functionReturnParameters": 118579, - "id": 118581, - "nodeType": "Return", - "src": "5413:20:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91485 - ], - "documentation": { - "id": 86659, - "nodeType": "StructuredDocumentation", - "src": "5200:41:147", -<<<<<<< Updated upstream -======= -======= - 123427 - ], - "documentation": { - "id": 118574, - "nodeType": "StructuredDocumentation", - "src": "5267:41:163", ->>>>>>> Stashed changes -======= - 123427 - ], - "documentation": { - "id": 118574, - "nodeType": "StructuredDocumentation", - "src": "5267:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "39e47da7", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getScaleDownRuleForDomainPrice", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "nameLocation": "5253:30:147", - "parameters": { - "id": 86660, - "nodeType": "ParameterList", - "parameters": [], - "src": "5283:2:147" - }, - "returnParameters": { - "id": 86664, -<<<<<<< Updated upstream -======= -======= - "nameLocation": "5320:30:163", - "parameters": { - "id": 118575, - "nodeType": "ParameterList", - "parameters": [], - "src": "5350:2:163" - }, - "returnParameters": { - "id": 118579, ->>>>>>> Stashed changes -======= - "nameLocation": "5320:30:163", - "parameters": { - "id": 118575, - "nodeType": "ParameterList", - "parameters": [], - "src": "5350:2:163" - }, - "returnParameters": { - "id": 118579, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86663, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5329:9:147", - "nodeType": "VariableDeclaration", - "scope": 86668, - "src": "5309:29:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_memory_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 86662, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86661, - "name": "PeriodScaler", - "nameLocations": [ - "5309:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "5309:12:147" - }, - "referencedDeclaration": 93662, - "src": "5309:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118578, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5396:9:163", - "nodeType": "VariableDeclaration", - "scope": 118583, - "src": "5376:29:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_memory_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118577, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118576, - "name": "PeriodScaler", - "nameLocations": [ - "5376:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "5376:12:163" - }, - "referencedDeclaration": 125607, - "src": "5376:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118578, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5396:9:163", - "nodeType": "VariableDeclaration", - "scope": 118583, - "src": "5376:29:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_memory_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118577, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118576, - "name": "PeriodScaler", - "nameLocations": [ - "5376:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "5376:12:163" - }, - "referencedDeclaration": 125607, - "src": "5376:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "5308:31:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5308:31:147" - }, - "scope": 87685, -======= - "src": "5375:31:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "5375:31:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86683, - "nodeType": "FunctionDefinition", - "src": "5419:157:147", - "nodes": [], - "body": { - "id": 86682, - "nodeType": "Block", - "src": "5530:46:147", -<<<<<<< Updated upstream -======= -======= - "id": 118598, - "nodeType": "FunctionDefinition", - "src": "5486:157:163", - "nodes": [], - "body": { - "id": 118597, - "nodeType": "Block", - "src": "5597:46:163", ->>>>>>> Stashed changes -======= - "id": 118598, - "nodeType": "FunctionDefinition", - "src": "5486:157:163", - "nodes": [], - "body": { - "id": 118597, - "nodeType": "Block", - "src": "5597:46:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86679, - "name": "scaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86672, - "src": "5561:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118594, - "name": "scaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118587, - "src": "5628:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 118594, - "name": "scaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118587, - "src": "5628:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 86678, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87526, - "src": "5536:24:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$93662_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 86680, -<<<<<<< Updated upstream -======= -======= - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 118593, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119288, - "src": "5603:24:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 118595, ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - ], - "id": 118593, - "name": "_setDomainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119288, - "src": "5603:24:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", - "typeString": "function (struct PeriodScaler calldata)" - } - }, - "id": 118595, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "5536:35:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5536:35:147", -======= - "src": "5603:35:163", ->>>>>>> Stashed changes -======= - "src": "5603:35:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86681, - "nodeType": "ExpressionStatement", - "src": "5536:35:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86681, - "nodeType": "ExpressionStatement", - "src": "5536:35:147" -======= - "id": 118596, - "nodeType": "ExpressionStatement", - "src": "5603:35:163" ->>>>>>> Stashed changes -======= - "id": 118596, - "nodeType": "ExpressionStatement", - "src": "5603:35:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91492 - ], - "documentation": { - "id": 86669, - "nodeType": "StructuredDocumentation", - "src": "5375:41:147", -<<<<<<< Updated upstream -======= -======= - 123434 - ], - "documentation": { - "id": 118584, - "nodeType": "StructuredDocumentation", - "src": "5442:41:163", ->>>>>>> Stashed changes -======= - 123434 - ], - "documentation": { - "id": 118584, - "nodeType": "StructuredDocumentation", - "src": "5442:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "e229a670", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86675, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68920, - "src": "5510:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118590, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "5577:18:163", ->>>>>>> Stashed changes -======= - "id": 118590, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 99838, - "src": "5577:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86676, - "kind": "modifierInvocation", - "modifierName": { - "id": 86674, - "name": "onlyRole", - "nameLocations": [ - "5501:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "5501:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "5501:28:147" - } - ], - "name": "setScaleDownRuleForDomainPrice", - "nameLocation": "5428:30:147", - "parameters": { - "id": 86673, -<<<<<<< Updated upstream -======= -======= - "id": 118591, - "kind": "modifierInvocation", - "modifierName": { - "id": 118589, - "name": "onlyRole", - "nameLocations": [ - "5568:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "5568:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "5568:28:163" - } - ], - "name": "setScaleDownRuleForDomainPrice", - "nameLocation": "5495:30:163", - "parameters": { - "id": 118588, ->>>>>>> Stashed changes -======= - "id": 118591, - "kind": "modifierInvocation", - "modifierName": { - "id": 118589, - "name": "onlyRole", - "nameLocations": [ - "5568:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "5568:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "5568:28:163" - } - ], - "name": "setScaleDownRuleForDomainPrice", - "nameLocation": "5495:30:163", - "parameters": { - "id": 118588, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86672, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5481:9:147", - "nodeType": "VariableDeclaration", - "scope": 86683, - "src": "5459:31:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 86671, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 86670, - "name": "PeriodScaler", - "nameLocations": [ - "5459:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "5459:12:147" - }, - "referencedDeclaration": 93662, - "src": "5459:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 118587, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5548:9:163", - "nodeType": "VariableDeclaration", - "scope": 118598, - "src": "5526:31:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118586, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118585, - "name": "PeriodScaler", - "nameLocations": [ - "5526:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "5526:12:163" - }, - "referencedDeclaration": 125607, - "src": "5526:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 118587, - "mutability": "mutable", - "name": "scaleRule", - "nameLocation": "5548:9:163", - "nodeType": "VariableDeclaration", - "scope": 118598, - "src": "5526:31:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 118586, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118585, - "name": "PeriodScaler", - "nameLocations": [ - "5526:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "5526:12:163" - }, - "referencedDeclaration": 125607, - "src": "5526:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "5458:33:147" - }, - "returnParameters": { - "id": 86677, - "nodeType": "ParameterList", - "parameters": [], - "src": "5530:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "5525:33:163" - }, - "returnParameters": { - "id": 118592, - "nodeType": "ParameterList", - "parameters": [], - "src": "5597:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "5525:33:163" - }, - "returnParameters": { - "id": 118592, - "nodeType": "ParameterList", - "parameters": [], - "src": "5597:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86710, - "nodeType": "FunctionDefinition", - "src": "5624:226:147", - "nodes": [], - "body": { - "id": 86709, - "nodeType": "Block", - "src": "5719:131:147", -<<<<<<< Updated upstream -======= -======= - "id": 118625, - "nodeType": "FunctionDefinition", - "src": "5691:226:163", - "nodes": [], - "body": { - "id": 118624, - "nodeType": "Block", - "src": "5786:131:163", ->>>>>>> Stashed changes -======= - "id": 118625, - "nodeType": "FunctionDefinition", - "src": "5691:226:163", - "nodes": [], - "body": { - "id": 118624, - "nodeType": "Block", - "src": "5786:131:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 86697, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86697, -======= - "id": 118612, ->>>>>>> Stashed changes -======= - "id": 118612, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86691, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86689, - "src": "5725:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118606, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5792:6:163", ->>>>>>> Stashed changes -======= - "id": 118606, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5792:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86692, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86425, - "src": "5734:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118607, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "5801:16:163", ->>>>>>> Stashed changes -======= - "id": 118607, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "5801:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86696, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86696, -======= - "id": 118611, ->>>>>>> Stashed changes -======= - "id": 118611, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "indexExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86693, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86686, - "src": "5751:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118608, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118601, - "src": "5818:5:163", ->>>>>>> Stashed changes -======= - "id": 118608, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118601, - "src": "5818:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, -<<<<<<< Updated upstream - "id": 86694, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86694, -======= - "id": 118609, ->>>>>>> Stashed changes -======= - "id": 118609, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "5757:9:147", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 93096, - "src": "5751:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "5824:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "5818:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "5824:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "5818:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, -<<<<<<< Updated upstream - "id": 86695, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86695, -======= - "id": 118610, ->>>>>>> Stashed changes -======= - "id": 118610, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "5751:17:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5751:17:147", -======= - "src": "5818:17:163", ->>>>>>> Stashed changes -======= - "src": "5818:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "5734:35:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5734:35:147", -======= - "src": "5801:35:163", ->>>>>>> Stashed changes -======= - "src": "5801:35:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "5725:44:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5725:44:147", -======= - "src": "5792:44:163", ->>>>>>> Stashed changes -======= - "src": "5792:44:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86698, - "nodeType": "ExpressionStatement", - "src": "5725:44:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86698, - "nodeType": "ExpressionStatement", - "src": "5725:44:147" -======= - "id": 118613, - "nodeType": "ExpressionStatement", - "src": "5792:44:163" ->>>>>>> Stashed changes -======= - "id": 118613, - "nodeType": "ExpressionStatement", - "src": "5792:44:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86701, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86701, -======= - "id": 118616, ->>>>>>> Stashed changes -======= - "id": 118616, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86699, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86689, - "src": "5779:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118614, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5846:6:163", ->>>>>>> Stashed changes -======= - "id": 118614, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5846:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", -<<<<<<< Updated upstream - "id": 86700, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86700, -======= - "id": 118615, ->>>>>>> Stashed changes -======= - "id": 118615, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "5789:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5789:1:147", -======= - "src": "5856:1:163", ->>>>>>> Stashed changes -======= - "src": "5856:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream - "src": "5779:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5779:11:147", -======= - "src": "5846:11:163", ->>>>>>> Stashed changes -======= - "src": "5846:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "id": 86705, - "nodeType": "IfStatement", - "src": "5775:50:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86705, - "nodeType": "IfStatement", - "src": "5775:50:147", -======= - "id": 118620, - "nodeType": "IfStatement", - "src": "5842:50:163", ->>>>>>> Stashed changes -======= - "id": 118620, - "nodeType": "IfStatement", - "src": "5842:50:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86702, - "name": "RenewalFeeIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91361, - "src": "5799:24:147", -<<<<<<< Updated upstream -======= -======= - "id": 118617, - "name": "RenewalFeeIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123302, - "src": "5866:24:163", ->>>>>>> Stashed changes -======= - "id": 118617, - "name": "RenewalFeeIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123302, - "src": "5866:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, -<<<<<<< Updated upstream - "id": 86703, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86703, -======= - "id": 118618, ->>>>>>> Stashed changes -======= - "id": 118618, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "5799:26:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5799:26:147", -======= - "src": "5866:26:163", ->>>>>>> Stashed changes -======= - "src": "5866:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86704, - "nodeType": "RevertStatement", - "src": "5792:33:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86704, - "nodeType": "RevertStatement", - "src": "5792:33:147" -======= - "id": 118619, - "nodeType": "RevertStatement", - "src": "5859:33:163" ->>>>>>> Stashed changes -======= - "id": 118619, - "nodeType": "RevertStatement", - "src": "5859:33:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - { - "expression": { -<<<<<<< Updated upstream - "id": 86707, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86707, -======= - "id": 118622, ->>>>>>> Stashed changes -======= - "id": 118622, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "5838:7:147", - "subExpression": { - "id": 86706, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86689, - "src": "5839:6:147", -<<<<<<< Updated upstream -======= -======= - "src": "5905:7:163", - "subExpression": { - "id": 118621, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5906:6:163", ->>>>>>> Stashed changes -======= - "src": "5905:7:163", - "subExpression": { - "id": 118621, - "name": "usdFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118604, - "src": "5906:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 86690, - "id": 86708, - "nodeType": "Return", - "src": "5831:14:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 118605, - "id": 118623, - "nodeType": "Return", - "src": "5898:14:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 118605, - "id": 118623, - "nodeType": "Return", - "src": "5898:14:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91560 - ], - "documentation": { - "id": 86684, - "nodeType": "StructuredDocumentation", - "src": "5580:41:147", -<<<<<<< Updated upstream -======= -======= - 123503 - ], - "documentation": { - "id": 118599, - "nodeType": "StructuredDocumentation", - "src": "5647:41:163", ->>>>>>> Stashed changes -======= - 123503 - ], - "documentation": { - "id": 118599, - "nodeType": "StructuredDocumentation", - "src": "5647:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "5c68c830", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getOverriddenRenewalFee", -<<<<<<< Updated upstream - "nameLocation": "5633:23:147", - "parameters": { - "id": 86687, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "5633:23:147", - "parameters": { - "id": 86687, -======= - "nameLocation": "5700:23:163", - "parameters": { - "id": 118602, ->>>>>>> Stashed changes -======= - "nameLocation": "5700:23:163", - "parameters": { - "id": 118602, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86686, - "mutability": "mutable", - "name": "label", - "nameLocation": "5673:5:147", - "nodeType": "VariableDeclaration", - "scope": 86710, - "src": "5657:21:147", -<<<<<<< Updated upstream -======= -======= - "id": 118601, - "mutability": "mutable", - "name": "label", - "nameLocation": "5740:5:163", - "nodeType": "VariableDeclaration", - "scope": 118625, - "src": "5724:21:163", ->>>>>>> Stashed changes -======= - "id": 118601, - "mutability": "mutable", - "name": "label", - "nameLocation": "5740:5:163", - "nodeType": "VariableDeclaration", - "scope": 118625, - "src": "5724:21:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86685, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5657:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118600, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5724:6:163", ->>>>>>> Stashed changes -======= - "id": 118600, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5724:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "5656:23:147" - }, - "returnParameters": { - "id": 86690, -<<<<<<< Updated upstream -======= -======= - "src": "5723:23:163" - }, - "returnParameters": { - "id": 118605, ->>>>>>> Stashed changes -======= - "src": "5723:23:163" - }, - "returnParameters": { - "id": 118605, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86689, - "mutability": "mutable", - "name": "usdFee", - "nameLocation": "5711:6:147", - "nodeType": "VariableDeclaration", - "scope": 86710, - "src": "5703:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118604, - "mutability": "mutable", - "name": "usdFee", - "nameLocation": "5778:6:163", - "nodeType": "VariableDeclaration", - "scope": 118625, - "src": "5770:14:163", ->>>>>>> Stashed changes -======= - "id": 118604, - "mutability": "mutable", - "name": "usdFee", - "nameLocation": "5778:6:163", - "nodeType": "VariableDeclaration", - "scope": 118625, - "src": "5770:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86688, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5703:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118603, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5770:7:163", ->>>>>>> Stashed changes -======= - "id": 118603, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5770:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "5702:16:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "5702:16:147" - }, - "scope": 87685, -======= - "src": "5769:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "5769:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86737, - "nodeType": "FunctionDefinition", - "src": "5898:205:147", - "nodes": [], - "body": { - "id": 86736, - "nodeType": "Block", - "src": "5985:118:147", - "nodes": [], - "statements": [ - { - "expression": { - "id": 86724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 86718, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86716, - "src": "5991:4:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 86719, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86430, - "src": "5998:15:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 86723, - "indexExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 86720, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86713, - "src": "6014:5:147", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - "id": 86721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6020:9:147", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 93096, - "src": "6014:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 86722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6014:17:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5998:34:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5991:41:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 86725, - "nodeType": "ExpressionStatement", - "src": "5991:41:147" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 86728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 86726, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86716, - "src": "6042:4:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 86727, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6050:1:147", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6042:9:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 86732, - "nodeType": "IfStatement", - "src": "6038:42:147", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 86729, - "name": "TierIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91363, - "src": "6060:18:147", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 86730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6060:20:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 86731, - "nodeType": "RevertStatement", - "src": "6053:27:147" - } - }, - { - "expression": { - "id": 86734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "6093:5:147", - "subExpression": { - "id": 86733, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86716, - "src": "6094:4:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 86717, - "id": 86735, - "nodeType": "Return", - "src": "6086:12:147" - } - ] - }, - "baseFunctions": [ - 91568 - ], - "documentation": { - "id": 86711, - "nodeType": "StructuredDocumentation", - "src": "5854:41:147", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "7e32146a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getOverriddenTier", - "nameLocation": "5907:17:147", - "parameters": { - "id": 86714, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 86713, - "mutability": "mutable", - "name": "label", - "nameLocation": "5941:5:147", - "nodeType": "VariableDeclaration", - "scope": 86737, - "src": "5925:21:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string" - }, - "typeName": { - "id": 86712, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5925:6:147", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5924:23:147" - }, - "returnParameters": { - "id": 86717, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 86716, - "mutability": "mutable", - "name": "tier", - "nameLocation": "5979:4:147", - "nodeType": "VariableDeclaration", - "scope": 86737, - "src": "5971:12:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 86715, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5971:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5970:14:147" - }, - "scope": 87685, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 86811, - "nodeType": "FunctionDefinition", - "src": "6151:577:147", - "nodes": [], - "body": { - "id": 86810, - "nodeType": "Block", - "src": "6287:441:147", -<<<<<<< Updated upstream -======= -======= - "id": 118655, - "nodeType": "FunctionDefinition", - "src": "5965:229:163", - "nodes": [], - "body": { - "id": 118654, - "nodeType": "Block", - "src": "6049:145:163", ->>>>>>> Stashed changes -======= - "id": 118655, - "nodeType": "FunctionDefinition", - "src": "5965:229:163", - "nodes": [], - "body": { - "id": 118654, - "nodeType": "Block", - "src": "6049:145:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86751 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86751 -======= - 118635 ->>>>>>> Stashed changes -======= - 118635 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86751, - "mutability": "mutable", - "name": "length", - "nameLocation": "6301:6:147", - "nodeType": "VariableDeclaration", - "scope": 86810, - "src": "6293:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118635, - "mutability": "mutable", - "name": "tierValue", - "nameLocation": "6061:9:163", - "nodeType": "VariableDeclaration", - "scope": 118654, - "src": "6055:15:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 118634, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6055:5:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 118641, - "initialValue": { - "baseExpression": { - "id": 118636, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118345, - "src": "6073:15:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", - "typeString": "mapping(bytes32 => uint8)" - } - }, - "id": 118640, - "indexExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 118637, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118628, - "src": "6089:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - "id": 118638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6095:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "6089:15:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 118639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6089:17:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6073:34:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6055:52:163" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 118644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 118642, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118635, - "src": "6117:9:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 118643, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6130:1:163", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6117:14:163", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 118648, - "nodeType": "IfStatement", - "src": "6113:47:163", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 118645, - "name": "TierIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123304, - "src": "6140:18:163", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 118646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6140:20:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 118647, - "nodeType": "RevertStatement", - "src": "6133:27:163" - } - }, - { - "expression": { - "arguments": [ - { - "id": 118651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "6178:10:163", - "subExpression": { - "id": 118650, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118635, - "src": "6179:9:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 118649, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "6173:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 118652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6173:16:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "functionReturnParameters": 118633, - "id": 118653, - "nodeType": "Return", - "src": "6166:23:163" - } - ] - }, - "baseFunctions": [ - 123512 - ], - "documentation": { - "id": 118626, - "nodeType": "StructuredDocumentation", - "src": "5921:41:163", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "7e32146a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getOverriddenTier", - "nameLocation": "5974:17:163", - "parameters": { - "id": 118629, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 118628, - "mutability": "mutable", - "name": "label", - "nameLocation": "6008:5:163", - "nodeType": "VariableDeclaration", - "scope": 118655, - "src": "5992:21:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string" - }, - "typeName": { - "id": 118627, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5992:6:163", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5991:23:163" - }, - "returnParameters": { - "id": 118633, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 118632, - "mutability": "mutable", - "name": "tier", - "nameLocation": "6043:4:163", - "nodeType": "VariableDeclaration", - "scope": 118655, - "src": "6038:9:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - }, - "typeName": { - "id": 118631, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118630, - "name": "Tier", - "nameLocations": [ - "6038:4:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123312, - "src": "6038:4:163" - }, - "referencedDeclaration": 123312, - "src": "6038:4:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "visibility": "internal" - } - ], - "src": "6037:11:163" - }, - "scope": 119626, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 118729, - "nodeType": "FunctionDefinition", - "src": "6242:577:163", - "nodes": [], - "body": { - "id": 118728, - "nodeType": "Block", - "src": "6378:441:163", - "nodes": [], - "statements": [ - { - "assignments": [ - 118669 - ], - "declarations": [ - { - "constant": false, - "id": 118669, - "mutability": "mutable", - "name": "length", - "nameLocation": "6392:6:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6384:14:163", ->>>>>>> Stashed changes -======= - "id": 118635, - "mutability": "mutable", - "name": "tierValue", - "nameLocation": "6061:9:163", - "nodeType": "VariableDeclaration", - "scope": 118654, - "src": "6055:15:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 118634, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6055:5:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 118641, - "initialValue": { - "baseExpression": { - "id": 118636, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118345, - "src": "6073:15:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", - "typeString": "mapping(bytes32 => uint8)" - } - }, - "id": 118640, - "indexExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 118637, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118628, - "src": "6089:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - "id": 118638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6095:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "6089:15:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 118639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6089:17:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6073:34:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6055:52:163" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 118644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 118642, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118635, - "src": "6117:9:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 118643, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6130:1:163", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6117:14:163", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 118648, - "nodeType": "IfStatement", - "src": "6113:47:163", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 118645, - "name": "TierIsNotOverriden", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123304, - "src": "6140:18:163", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 118646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6140:20:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 118647, - "nodeType": "RevertStatement", - "src": "6133:27:163" - } - }, - { - "expression": { - "arguments": [ - { - "id": 118651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "6178:10:163", - "subExpression": { - "id": 118650, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118635, - "src": "6179:9:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 118649, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "6173:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 118652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6173:16:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "functionReturnParameters": 118633, - "id": 118653, - "nodeType": "Return", - "src": "6166:23:163" - } - ] - }, - "baseFunctions": [ - 123512 - ], - "documentation": { - "id": 118626, - "nodeType": "StructuredDocumentation", - "src": "5921:41:163", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "7e32146a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getOverriddenTier", - "nameLocation": "5974:17:163", - "parameters": { - "id": 118629, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 118628, - "mutability": "mutable", - "name": "label", - "nameLocation": "6008:5:163", - "nodeType": "VariableDeclaration", - "scope": 118655, - "src": "5992:21:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string" - }, - "typeName": { - "id": 118627, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5992:6:163", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5991:23:163" - }, - "returnParameters": { - "id": 118633, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 118632, - "mutability": "mutable", - "name": "tier", - "nameLocation": "6043:4:163", - "nodeType": "VariableDeclaration", - "scope": 118655, - "src": "6038:9:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - }, - "typeName": { - "id": 118631, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118630, - "name": "Tier", - "nameLocations": [ - "6038:4:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123312, - "src": "6038:4:163" - }, - "referencedDeclaration": 123312, - "src": "6038:4:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "visibility": "internal" - } - ], - "src": "6037:11:163" - }, - "scope": 119626, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 118729, - "nodeType": "FunctionDefinition", - "src": "6242:577:163", - "nodes": [], - "body": { - "id": 118728, - "nodeType": "Block", - "src": "6378:441:163", - "nodes": [], - "statements": [ - { - "assignments": [ - 118669 - ], - "declarations": [ - { - "constant": false, - "id": 118669, - "mutability": "mutable", - "name": "length", - "nameLocation": "6392:6:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6384:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86750, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6293:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6384:7:163", ->>>>>>> Stashed changes -======= - "id": 118668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6384:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86754, - "initialValue": { - "expression": { - "id": 86752, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86741, - "src": "6310:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118672, - "initialValue": { - "expression": { - "id": 118670, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6401:8:163", ->>>>>>> Stashed changes -======= - "id": 118672, - "initialValue": { - "expression": { - "id": 118670, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6401:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 86753, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86753, -======= - "id": 118671, ->>>>>>> Stashed changes -======= - "id": 118671, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "6319:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6310:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "6410:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6401:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "6410:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6401:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream - "src": "6293:32:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6293:32:147" -======= - "src": "6384:32:163" ->>>>>>> Stashed changes -======= - "src": "6384:32:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 86762, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86762, -======= - "id": 118680, ->>>>>>> Stashed changes -======= - "id": 118680, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86757, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86757, -======= - "id": 118675, ->>>>>>> Stashed changes -======= - "id": 118675, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86755, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86751, - "src": "6335:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118673, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6426:6:163", ->>>>>>> Stashed changes -======= - "id": 118673, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6426:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", -<<<<<<< Updated upstream - "id": 86756, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86756, -======= - "id": 118674, ->>>>>>> Stashed changes -======= - "id": 118674, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "6345:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6345:1:147", -======= - "src": "6436:1:163", ->>>>>>> Stashed changes -======= - "src": "6436:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream - "src": "6335:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6335:11:147", -======= - "src": "6426:11:163", ->>>>>>> Stashed changes -======= - "src": "6426:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86761, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86761, -======= - "id": 118679, ->>>>>>> Stashed changes -======= - "id": 118679, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86758, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86751, - "src": "6350:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118676, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6441:6:163", ->>>>>>> Stashed changes -======= - "id": 118676, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6441:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86759, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86744, - "src": "6360:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118677, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118662, - "src": "6451:9:163", ->>>>>>> Stashed changes -======= - "id": 118677, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118662, - "src": "6451:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 86760, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86760, -======= - "id": 118678, ->>>>>>> Stashed changes -======= - "id": 118678, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "6370:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6360:16:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "6461:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6451:16:163", ->>>>>>> Stashed changes -======= - "memberLocation": "6461:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6451:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "6350:26:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6350:26:147", -======= - "src": "6441:26:163", ->>>>>>> Stashed changes -======= - "src": "6441:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "6335:41:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6335:41:147", -======= - "src": "6426:41:163", ->>>>>>> Stashed changes -======= - "src": "6426:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "id": 86766, - "nodeType": "IfStatement", - "src": "6331:74:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86766, - "nodeType": "IfStatement", - "src": "6331:74:147", -======= - "id": 118684, - "nodeType": "IfStatement", - "src": "6422:74:163", ->>>>>>> Stashed changes -======= - "id": 118684, - "nodeType": "IfStatement", - "src": "6422:74:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86763, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91359, - "src": "6385:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 118681, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123300, - "src": "6476:18:163", ->>>>>>> Stashed changes -======= - "id": 118681, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123300, - "src": "6476:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, -<<<<<<< Updated upstream - "id": 86764, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86764, -======= - "id": 118682, ->>>>>>> Stashed changes -======= - "id": 118682, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "6385:20:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6385:20:147", -======= - "src": "6476:20:163", ->>>>>>> Stashed changes -======= - "src": "6476:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86765, - "nodeType": "RevertStatement", - "src": "6378:27:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86765, - "nodeType": "RevertStatement", - "src": "6378:27:147" -======= - "id": 118683, - "nodeType": "RevertStatement", - "src": "6469:27:163" ->>>>>>> Stashed changes -======= - "id": 118683, - "nodeType": "RevertStatement", - "src": "6469:27:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - { - "assignments": [ -<<<<<<< Updated upstream - 86768 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86768 -======= - 118686 ->>>>>>> Stashed changes -======= - 118686 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86768, - "mutability": "mutable", - "name": "inverseBitwise", - "nameLocation": "6419:14:147", - "nodeType": "VariableDeclaration", - "scope": 86810, - "src": "6411:22:147", -<<<<<<< Updated upstream -======= -======= - "id": 118686, - "mutability": "mutable", - "name": "inverseBitwise", - "nameLocation": "6510:14:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6502:22:163", ->>>>>>> Stashed changes -======= - "id": 118686, - "mutability": "mutable", - "name": "inverseBitwise", - "nameLocation": "6510:14:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6502:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86767, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6411:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118685, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6502:7:163", ->>>>>>> Stashed changes -======= - "id": 118685, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6502:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86769, - "nodeType": "VariableDeclarationStatement", - "src": "6411:22:147" - }, - { - "assignments": [ - 86771 -<<<<<<< Updated upstream -======= -======= - "id": 118687, - "nodeType": "VariableDeclarationStatement", - "src": "6502:22:163" - }, - { - "assignments": [ - 118689 ->>>>>>> Stashed changes -======= - "id": 118687, - "nodeType": "VariableDeclarationStatement", - "src": "6502:22:163" - }, - { - "assignments": [ - 118689 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86771, - "mutability": "mutable", - "name": "operator", - "nameLocation": "6447:8:147", - "nodeType": "VariableDeclaration", - "scope": 86810, - "src": "6439:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118689, - "mutability": "mutable", - "name": "operator", - "nameLocation": "6538:8:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6530:16:163", ->>>>>>> Stashed changes -======= - "id": 118689, - "mutability": "mutable", - "name": "operator", - "nameLocation": "6538:8:163", - "nodeType": "VariableDeclaration", - "scope": 118728, - "src": "6530:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86770, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6439:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118688, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6530:7:163", ->>>>>>> Stashed changes -======= - "id": 118688, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6530:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 86774, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86774, -======= - "id": 118692, ->>>>>>> Stashed changes -======= - "id": 118692, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86772, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "6458:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 118690, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "6549:10:163", ->>>>>>> Stashed changes -======= - "id": 118690, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "6549:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 86773, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86773, -======= - "id": 118691, ->>>>>>> Stashed changes -======= - "id": 118691, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "6458:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6458:12:147", -======= - "src": "6549:12:163", ->>>>>>> Stashed changes -======= - "src": "6549:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "6439:31:147" - }, - { - "body": { - "id": 86808, - "nodeType": "Block", - "src": "6506:218:147", - "statements": [ - { - "expression": { - "id": 86786, -<<<<<<< Updated upstream -======= -======= - "src": "6530:31:163" - }, - { - "body": { - "id": 118726, - "nodeType": "Block", - "src": "6597:218:163", - "statements": [ - { - "expression": { - "id": 118704, ->>>>>>> Stashed changes -======= - "src": "6530:31:163" - }, - { - "body": { - "id": 118726, - "nodeType": "Block", - "src": "6597:218:163", - "statements": [ - { - "expression": { - "id": 118704, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86781, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86768, - "src": "6514:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118699, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6605:14:163", ->>>>>>> Stashed changes -======= - "id": 118699, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6605:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream - "id": 86785, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86785, -======= - "id": 118703, ->>>>>>> Stashed changes -======= - "id": 118703, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "6531:13:147", - "subExpression": { - "baseExpression": { - "id": 86782, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86744, - "src": "6532:9:147", -<<<<<<< Updated upstream -======= -======= - "src": "6622:13:163", - "subExpression": { - "baseExpression": { - "id": 118700, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118662, - "src": "6623:9:163", ->>>>>>> Stashed changes -======= - "src": "6622:13:163", - "subExpression": { - "baseExpression": { - "id": 118700, - "name": "usdPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118662, - "src": "6623:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86784, - "indexExpression": { - "id": 86783, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86776, - "src": "6542:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118702, - "indexExpression": { - "id": 118701, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6633:1:163", ->>>>>>> Stashed changes -======= - "id": 118702, - "indexExpression": { - "id": 118701, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6633:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "6532:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6532:12:147", -======= - "src": "6623:12:163", ->>>>>>> Stashed changes -======= - "src": "6623:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "6514:30:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6514:30:147", -======= - "src": "6605:30:163", ->>>>>>> Stashed changes -======= - "src": "6605:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86787, - "nodeType": "ExpressionStatement", - "src": "6514:30:147" - }, - { - "expression": { - "id": 86794, -<<<<<<< Updated upstream -======= -======= - "id": 118705, - "nodeType": "ExpressionStatement", - "src": "6605:30:163" - }, - { - "expression": { - "id": 118712, ->>>>>>> Stashed changes -======= - "id": 118705, - "nodeType": "ExpressionStatement", - "src": "6605:30:163" - }, - { - "expression": { - "id": 118712, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86788, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86425, - "src": "6552:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118706, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "6643:16:163", ->>>>>>> Stashed changes -======= - "id": 118706, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "6643:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86792, - "indexExpression": { - "baseExpression": { - "id": 86789, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86741, - "src": "6569:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118710, - "indexExpression": { - "baseExpression": { - "id": 118707, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6660:8:163", ->>>>>>> Stashed changes -======= - "id": 118710, - "indexExpression": { - "baseExpression": { - "id": 118707, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6660:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86791, - "indexExpression": { - "id": 86790, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86776, - "src": "6578:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118709, - "indexExpression": { - "id": 118708, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6669:1:163", ->>>>>>> Stashed changes -======= - "id": 118709, - "indexExpression": { - "id": 118708, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6669:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "6569:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6569:11:147", -======= - "src": "6660:11:163", ->>>>>>> Stashed changes -======= - "src": "6660:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "6552:29:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6552:29:147", -======= - "src": "6643:29:163", ->>>>>>> Stashed changes -======= - "src": "6643:29:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86793, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86768, - "src": "6584:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118711, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6675:14:163", ->>>>>>> Stashed changes -======= - "id": 118711, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6675:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "6552:46:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6552:46:147", -======= - "src": "6643:46:163", ->>>>>>> Stashed changes -======= - "src": "6643:46:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86795, - "nodeType": "ExpressionStatement", - "src": "6552:46:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86795, - "nodeType": "ExpressionStatement", - "src": "6552:46:147" -======= - "id": 118713, - "nodeType": "ExpressionStatement", - "src": "6643:46:163" ->>>>>>> Stashed changes -======= - "id": 118713, - "nodeType": "ExpressionStatement", - "src": "6643:46:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86797, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86771, - "src": "6639:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118715, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118689, - "src": "6730:8:163", ->>>>>>> Stashed changes -======= - "id": 118715, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118689, - "src": "6730:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86798, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86741, - "src": "6649:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118716, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6740:8:163", ->>>>>>> Stashed changes -======= - "id": 118716, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118659, - "src": "6740:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86800, - "indexExpression": { - "id": 86799, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86776, - "src": "6658:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118718, - "indexExpression": { - "id": 118717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6749:1:163", ->>>>>>> Stashed changes -======= - "id": 118718, - "indexExpression": { - "id": 118717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6749:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "6649:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6649:11:147", -======= - "src": "6740:11:163", ->>>>>>> Stashed changes -======= - "src": "6740:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86801, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86768, - "src": "6662:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118719, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6753:14:163", ->>>>>>> Stashed changes -======= - "id": 118719, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118686, - "src": "6753:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86796, - "name": "RenewalFeeOverridingUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91413, - "src": "6611:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118714, - "name": "RenewalFeeOverridingUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123354, - "src": "6702:27:163", ->>>>>>> Stashed changes -======= - "id": 118714, - "name": "RenewalFeeOverridingUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123354, - "src": "6702:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86802, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86802, -======= - "id": 118720, ->>>>>>> Stashed changes -======= - "id": 118720, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "6611:66:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6611:66:147", -======= - "src": "6702:66:163", ->>>>>>> Stashed changes -======= - "src": "6702:66:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86803, - "nodeType": "EmitStatement", - "src": "6606:71:147" - }, - { - "id": 86807, - "nodeType": "UncheckedBlock", - "src": "6686:32:147", - "statements": [ - { - "expression": { - "id": 86805, -<<<<<<< Updated upstream -======= -======= - "id": 118721, - "nodeType": "EmitStatement", - "src": "6697:71:163" - }, - { - "id": 118725, - "nodeType": "UncheckedBlock", - "src": "6777:32:163", - "statements": [ - { - "expression": { - "id": 118723, ->>>>>>> Stashed changes -======= - "id": 118721, - "nodeType": "EmitStatement", - "src": "6697:71:163" - }, - { - "id": 118725, - "nodeType": "UncheckedBlock", - "src": "6777:32:163", - "statements": [ - { - "expression": { - "id": 118723, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "6706:3:147", - "subExpression": { - "id": 86804, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86776, - "src": "6708:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "6797:3:163", - "subExpression": { - "id": 118722, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6799:1:163", ->>>>>>> Stashed changes -======= - "src": "6797:3:163", - "subExpression": { - "id": 118722, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6799:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86806, - "nodeType": "ExpressionStatement", - "src": "6706:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86806, - "nodeType": "ExpressionStatement", - "src": "6706:3:147" -======= - "id": 118724, - "nodeType": "ExpressionStatement", - "src": "6797:3:163" ->>>>>>> Stashed changes -======= - "id": 118724, - "nodeType": "ExpressionStatement", - "src": "6797:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86780, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86780, -======= - "id": 118698, ->>>>>>> Stashed changes -======= - "id": 118698, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86778, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86776, - "src": "6493:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118696, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6584:1:163", ->>>>>>> Stashed changes -======= - "id": 118696, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118694, - "src": "6584:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86779, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86751, - "src": "6497:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118697, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6588:6:163", ->>>>>>> Stashed changes -======= - "id": 118697, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118669, - "src": "6588:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "6493:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6493:10:147", -======= - "src": "6584:10:163", ->>>>>>> Stashed changes -======= - "src": "6584:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86809, - "initializationExpression": { - "assignments": [ - 86776 -<<<<<<< Updated upstream -======= -======= - "id": 118727, - "initializationExpression": { - "assignments": [ - 118694 ->>>>>>> Stashed changes -======= - "id": 118727, - "initializationExpression": { - "assignments": [ - 118694 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86776, - "mutability": "mutable", - "name": "i", - "nameLocation": "6490:1:147", - "nodeType": "VariableDeclaration", - "scope": 86809, - "src": "6482:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118694, - "mutability": "mutable", - "name": "i", - "nameLocation": "6581:1:163", - "nodeType": "VariableDeclaration", - "scope": 118727, - "src": "6573:9:163", ->>>>>>> Stashed changes -======= - "id": 118694, - "mutability": "mutable", - "name": "i", - "nameLocation": "6581:1:163", - "nodeType": "VariableDeclaration", - "scope": 118727, - "src": "6573:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86775, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6482:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118693, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6573:7:163", ->>>>>>> Stashed changes -======= - "id": 118693, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6573:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86777, - "nodeType": "VariableDeclarationStatement", - "src": "6482:9:147" - }, - "nodeType": "ForStatement", - "src": "6477:247:147" -<<<<<<< Updated upstream -======= -======= - "id": 118695, - "nodeType": "VariableDeclarationStatement", - "src": "6573:9:163" - }, - "nodeType": "ForStatement", - "src": "6568:247:163" ->>>>>>> Stashed changes -======= - "id": 118695, - "nodeType": "VariableDeclarationStatement", - "src": "6573:9:163" - }, - "nodeType": "ForStatement", - "src": "6568:247:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91578 - ], - "documentation": { - "id": 86738, - "nodeType": "StructuredDocumentation", - "src": "6107:41:147", -<<<<<<< Updated upstream -======= -======= - 123522 - ], - "documentation": { - "id": 118656, - "nodeType": "StructuredDocumentation", - "src": "6198:41:163", ->>>>>>> Stashed changes -======= - 123522 - ], - "documentation": { - "id": 118656, - "nodeType": "StructuredDocumentation", - "src": "6198:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "dd28776d", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86747, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86380, - "src": "6269:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118665, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118295, - "src": "6360:14:163", ->>>>>>> Stashed changes -======= - "id": 118665, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118295, - "src": "6360:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86748, - "kind": "modifierInvocation", - "modifierName": { - "id": 86746, - "name": "onlyRole", - "nameLocations": [ - "6260:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "6260:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "6260:24:147" - } - ], - "name": "bulkOverrideRenewalFees", - "nameLocation": "6160:23:147", - "parameters": { - "id": 86745, -<<<<<<< Updated upstream -======= -======= - "id": 118666, - "kind": "modifierInvocation", - "modifierName": { - "id": 118664, - "name": "onlyRole", - "nameLocations": [ - "6351:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "6351:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "6351:24:163" - } - ], - "name": "bulkOverrideRenewalFees", - "nameLocation": "6251:23:163", - "parameters": { - "id": 118663, ->>>>>>> Stashed changes -======= - "id": 118666, - "kind": "modifierInvocation", - "modifierName": { - "id": 118664, - "name": "onlyRole", - "nameLocations": [ - "6351:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "6351:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "6351:24:163" - } - ], - "name": "bulkOverrideRenewalFees", - "nameLocation": "6251:23:163", - "parameters": { - "id": 118663, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86741, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "6203:8:147", - "nodeType": "VariableDeclaration", - "scope": 86811, - "src": "6184:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118659, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "6294:8:163", - "nodeType": "VariableDeclaration", - "scope": 118729, - "src": "6275:27:163", ->>>>>>> Stashed changes -======= - "id": 118659, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "6294:8:163", - "nodeType": "VariableDeclaration", - "scope": 118729, - "src": "6275:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86739, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6184:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118657, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6275:7:163", ->>>>>>> Stashed changes -======= - "id": 118657, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6275:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86740, - "nodeType": "ArrayTypeName", - "src": "6184:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86740, - "nodeType": "ArrayTypeName", - "src": "6184:9:147", -======= - "id": 118658, - "nodeType": "ArrayTypeName", - "src": "6275:9:163", ->>>>>>> Stashed changes -======= - "id": 118658, - "nodeType": "ArrayTypeName", - "src": "6275:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86744, - "mutability": "mutable", - "name": "usdPrices", - "nameLocation": "6232:9:147", - "nodeType": "VariableDeclaration", - "scope": 86811, - "src": "6213:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 118662, - "mutability": "mutable", - "name": "usdPrices", - "nameLocation": "6323:9:163", - "nodeType": "VariableDeclaration", - "scope": 118729, - "src": "6304:28:163", ->>>>>>> Stashed changes -======= - "id": 118662, - "mutability": "mutable", - "name": "usdPrices", - "nameLocation": "6323:9:163", - "nodeType": "VariableDeclaration", - "scope": 118729, - "src": "6304:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86742, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6213:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118660, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6304:7:163", ->>>>>>> Stashed changes -======= - "id": 118660, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6304:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86743, - "nodeType": "ArrayTypeName", - "src": "6213:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86743, - "nodeType": "ArrayTypeName", - "src": "6213:9:147", -======= - "id": 118661, - "nodeType": "ArrayTypeName", - "src": "6304:9:163", ->>>>>>> Stashed changes -======= - "id": 118661, - "nodeType": "ArrayTypeName", - "src": "6304:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "6183:59:147" - }, - "returnParameters": { - "id": 86749, - "nodeType": "ParameterList", - "parameters": [], - "src": "6287:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "6274:59:163" - }, - "returnParameters": { - "id": 118667, - "nodeType": "ParameterList", - "parameters": [], - "src": "6378:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "6274:59:163" - }, - "returnParameters": { - "id": 118667, - "nodeType": "ParameterList", - "parameters": [], - "src": "6378:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86885, - "nodeType": "FunctionDefinition", - "src": "6776:542:147", - "nodes": [], - "body": { - "id": 86884, - "nodeType": "Block", - "src": "6892:426:147", -<<<<<<< Updated upstream -======= -======= - "id": 118809, - "nodeType": "FunctionDefinition", - "src": "6867:538:163", - "nodes": [], - "body": { - "id": 118808, - "nodeType": "Block", - "src": "6980:425:163", ->>>>>>> Stashed changes -======= - "id": 118809, - "nodeType": "FunctionDefinition", - "src": "6867:538:163", - "nodes": [], - "body": { - "id": 118808, - "nodeType": "Block", - "src": "6980:425:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86825 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86825 -======= - 118744 ->>>>>>> Stashed changes -======= - 118744 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86825, - "mutability": "mutable", - "name": "length", - "nameLocation": "6906:6:147", - "nodeType": "VariableDeclaration", - "scope": 86884, - "src": "6898:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118744, - "mutability": "mutable", - "name": "length", - "nameLocation": "6994:6:163", - "nodeType": "VariableDeclaration", - "scope": 118808, - "src": "6986:14:163", ->>>>>>> Stashed changes -======= - "id": 118744, - "mutability": "mutable", - "name": "length", - "nameLocation": "6994:6:163", - "nodeType": "VariableDeclaration", - "scope": 118808, - "src": "6986:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6898:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118743, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6986:7:163", ->>>>>>> Stashed changes -======= - "id": 118743, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6986:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86828, - "initialValue": { - "expression": { - "id": 86826, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86815, - "src": "6915:8:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118747, - "initialValue": { - "expression": { - "id": 118745, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118733, - "src": "7003:8:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 86827, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86827, -======= - "id": 118746, ->>>>>>> Stashed changes -======= - "id": 118746, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "6924:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6915:15:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "memberLocation": "7012:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "7003:15:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream - "src": "6898:32:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6898:32:147" -======= - "src": "6986:32:163" ->>>>>>> Stashed changes -======= - "src": "6986:32:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 86836, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86836, -======= - "id": 118755, ->>>>>>> Stashed changes -======= - "id": 118755, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86831, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86831, -======= - "id": 118750, ->>>>>>> Stashed changes -======= - "id": 118750, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86829, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86825, - "src": "6940:6:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118748, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118744, - "src": "7028:6:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", -<<<<<<< Updated upstream - "id": 86830, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86830, -======= - "id": 118749, ->>>>>>> Stashed changes -======= - "id": 118749, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "6950:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6950:1:147", -======= - "src": "7038:1:163", ->>>>>>> Stashed changes -======= - "src": "7038:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream - "src": "6940:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6940:11:147", -======= - "src": "7028:11:163", ->>>>>>> Stashed changes -======= - "src": "7028:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86835, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86835, -======= - "id": 118754, ->>>>>>> Stashed changes -======= - "id": 118754, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86832, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86825, - "src": "6955:6:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118751, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118744, - "src": "7043:6:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86833, - "name": "tiers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86818, - "src": "6965:5:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 86834, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118752, - "name": "tiers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118737, - "src": "7053:5:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", - "typeString": "enum INSDomainPrice.Tier[] calldata" - } - }, - "id": 118753, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "6971:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6965:12:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "memberLocation": "7059:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "7053:12:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "6955:22:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6955:22:147", -======= - "src": "7043:22:163", ->>>>>>> Stashed changes -======= - "src": "7043:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "6940:37:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6940:37:147", -======= - "src": "7028:37:163", ->>>>>>> Stashed changes -======= - "src": "7028:37:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "id": 86840, - "nodeType": "IfStatement", - "src": "6936:70:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86840, - "nodeType": "IfStatement", - "src": "6936:70:147", -======= - "id": 118759, - "nodeType": "IfStatement", - "src": "7024:70:163", ->>>>>>> Stashed changes -======= - "id": 118759, - "nodeType": "IfStatement", - "src": "7024:70:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86837, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91359, - "src": "6986:18:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118756, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123300, - "src": "7074:18:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, -<<<<<<< Updated upstream - "id": 86838, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86838, -======= - "id": 118757, ->>>>>>> Stashed changes -======= - "id": 118757, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "6986:20:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "6986:20:147", -======= - "src": "7074:20:163", ->>>>>>> Stashed changes -======= - "src": "7074:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 86839, - "nodeType": "RevertStatement", - "src": "6979:27:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86839, - "nodeType": "RevertStatement", - "src": "6979:27:147" -======= - "id": 118758, - "nodeType": "RevertStatement", - "src": "7067:27:163" ->>>>>>> Stashed changes -======= - "id": 118758, - "nodeType": "RevertStatement", - "src": "7067:27:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - { - "assignments": [ -<<<<<<< Updated upstream - 86842 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86842 -======= - 118761 ->>>>>>> Stashed changes -======= - 118761 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86842, - "mutability": "mutable", - "name": "inverseBitwise", - "nameLocation": "7020:14:147", - "nodeType": "VariableDeclaration", - "scope": 86884, - "src": "7012:22:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 86841, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7012:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118761, - "mutability": "mutable", - "name": "inverseBitwise", - "nameLocation": "7106:14:163", - "nodeType": "VariableDeclaration", - "scope": 118808, - "src": "7100:20:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 118760, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7100:5:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86843, - "nodeType": "VariableDeclarationStatement", - "src": "7012:22:147" - }, - { - "assignments": [ - 86845 -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118762, - "nodeType": "VariableDeclarationStatement", - "src": "7100:20:163" - }, - { - "assignments": [ - 118764 -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86845, - "mutability": "mutable", - "name": "operator", - "nameLocation": "7048:8:147", - "nodeType": "VariableDeclaration", - "scope": 86884, - "src": "7040:16:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118764, - "mutability": "mutable", - "name": "operator", - "nameLocation": "7134:8:163", - "nodeType": "VariableDeclaration", - "scope": 118808, - "src": "7126:16:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86844, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7040:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118763, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7126:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 86848, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86848, -======= - "id": 118767, ->>>>>>> Stashed changes -======= - "id": 118767, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86846, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "7059:10:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118765, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "7145:10:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 86847, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86847, -======= - "id": 118766, ->>>>>>> Stashed changes -======= - "id": 118766, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7059:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7059:12:147", -======= - "src": "7145:12:163", ->>>>>>> Stashed changes -======= - "src": "7145:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7040:31:147" - }, - { - "body": { - "id": 86882, - "nodeType": "Block", - "src": "7107:207:147", - "statements": [ - { - "expression": { - "id": 86860, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "7126:31:163" - }, - { - "body": { - "id": 118806, - "nodeType": "Block", - "src": "7193:208:163", - "statements": [ - { - "expression": { - "id": 118782, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86855, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86842, - "src": "7115:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118774, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118761, - "src": "7201:14:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream - "id": 86859, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86859, -======= - "id": 118781, ->>>>>>> Stashed changes -======= - "id": 118781, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7132:9:147", - "subExpression": { - "baseExpression": { - "id": 86856, - "name": "tiers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86818, - "src": "7133:5:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 86858, - "indexExpression": { - "id": 86857, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86850, - "src": "7139:1:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7133:8:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7115:26:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 86861, - "nodeType": "ExpressionStatement", - "src": "7115:26:147" - }, - { - "expression": { - "id": 86868, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "7218:16:163", - "subExpression": { - "arguments": [ - { - "baseExpression": { - "id": 118777, - "name": "tiers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118737, - "src": "7225:5:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", - "typeString": "enum INSDomainPrice.Tier[] calldata" - } - }, - "id": 118779, - "indexExpression": { - "id": 118778, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7231:1:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7225:8:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - ], - "id": 118776, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7219:5:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 118775, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "7219:5:163", - "typeDescriptions": {} - } - }, - "id": 118780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7219:15:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "7201:33:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 118783, - "nodeType": "ExpressionStatement", - "src": "7201:33:163" - }, - { - "expression": { - "id": 118790, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86862, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86430, - "src": "7149:15:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 86866, - "indexExpression": { - "baseExpression": { - "id": 86863, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86815, - "src": "7165:8:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118784, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118345, - "src": "7242:15:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", - "typeString": "mapping(bytes32 => uint8)" - } - }, - "id": 118788, - "indexExpression": { - "baseExpression": { - "id": 118785, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118733, - "src": "7258:8:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86865, - "indexExpression": { - "id": 86864, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86850, - "src": "7174:1:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118787, - "indexExpression": { - "id": 118786, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7267:1:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7165:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7165:11:147", -======= - "src": "7258:11:163", ->>>>>>> Stashed changes -======= - "src": "7258:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7149:28:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "7242:28:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86867, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86842, - "src": "7180:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7149:45:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 86869, - "nodeType": "ExpressionStatement", - "src": "7149:45:147" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118789, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118761, - "src": "7273:14:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "7242:45:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 118791, - "nodeType": "ExpressionStatement", - "src": "7242:45:163" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86871, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86845, - "src": "7229:8:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118793, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118764, - "src": "7322:8:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86872, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86815, - "src": "7239:8:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118794, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118733, - "src": "7332:8:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86874, - "indexExpression": { - "id": 86873, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86850, - "src": "7248:1:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118796, - "indexExpression": { - "id": 118795, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7341:1:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7239:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7239:11:147", -======= - "src": "7332:11:163", ->>>>>>> Stashed changes -======= - "src": "7332:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86875, - "name": "inverseBitwise", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86842, - "src": "7252:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "baseExpression": { - "id": 118797, - "name": "tiers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118737, - "src": "7345:5:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", - "typeString": "enum INSDomainPrice.Tier[] calldata" - } - }, - "id": 118799, - "indexExpression": { - "id": 118798, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7351:1:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7345:8:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 86870, - "name": "TierOverridingUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91422, - "src": "7207:21:147", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,uint256)" - } - }, - "id": 86876, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - ], - "id": 118792, - "name": "TierOverridingUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123364, - "src": "7300:21:163", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_enum$_Tier_$123312_$returns$__$", - "typeString": "function (address,bytes32,enum INSDomainPrice.Tier)" - } - }, - "id": 118800, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7207:60:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7207:60:147", -======= - "src": "7300:54:163", ->>>>>>> Stashed changes -======= - "src": "7300:54:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86877, - "nodeType": "EmitStatement", - "src": "7202:65:147" - }, - { - "id": 86881, - "nodeType": "UncheckedBlock", - "src": "7276:32:147", - "statements": [ - { - "expression": { - "id": 86879, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118801, - "nodeType": "EmitStatement", - "src": "7295:59:163" - }, - { - "id": 118805, - "nodeType": "UncheckedBlock", - "src": "7363:32:163", - "statements": [ - { - "expression": { - "id": 118803, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7296:3:147", - "subExpression": { - "id": 86878, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86850, - "src": "7298:1:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "7383:3:163", - "subExpression": { - "id": 118802, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7385:1:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86880, - "nodeType": "ExpressionStatement", - "src": "7296:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86880, - "nodeType": "ExpressionStatement", - "src": "7296:3:147" -======= - "id": 118804, - "nodeType": "ExpressionStatement", - "src": "7383:3:163" ->>>>>>> Stashed changes -======= - "id": 118804, - "nodeType": "ExpressionStatement", - "src": "7383:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86854, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86854, -======= - "id": 118773, ->>>>>>> Stashed changes -======= - "id": 118773, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86852, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86850, - "src": "7094:1:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118771, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118769, - "src": "7180:1:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86853, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86825, - "src": "7098:6:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118772, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118744, - "src": "7184:6:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "7094:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7094:10:147", -======= - "src": "7180:10:163", ->>>>>>> Stashed changes -======= - "src": "7180:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86883, - "initializationExpression": { - "assignments": [ - 86850 -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118807, - "initializationExpression": { - "assignments": [ - 118769 -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86850, - "mutability": "mutable", - "name": "i", - "nameLocation": "7091:1:147", - "nodeType": "VariableDeclaration", - "scope": 86883, - "src": "7083:9:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118769, - "mutability": "mutable", - "name": "i", - "nameLocation": "7177:1:163", - "nodeType": "VariableDeclaration", - "scope": 118807, - "src": "7169:9:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86849, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7083:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118768, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7169:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86851, - "nodeType": "VariableDeclarationStatement", - "src": "7083:9:147" - }, - "nodeType": "ForStatement", - "src": "7078:236:147" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118770, - "nodeType": "VariableDeclarationStatement", - "src": "7169:9:163" - }, - "nodeType": "ForStatement", - "src": "7164:237:163" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91588 - ], - "documentation": { - "id": 86812, - "nodeType": "StructuredDocumentation", - "src": "6732:41:147", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "cff8372f", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - 123533 - ], - "documentation": { - "id": 118730, - "nodeType": "StructuredDocumentation", - "src": "6823:41:163", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "59228107", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86821, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86380, - "src": "6876:14:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118740, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118295, - "src": "6964:14:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86822, - "kind": "modifierInvocation", - "modifierName": { - "id": 86820, - "name": "onlyRole", - "nameLocations": [ - "6867:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "6867:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "6867:24:147" - } - ], - "name": "bulkOverrideTiers", - "nameLocation": "6785:17:147", - "parameters": { - "id": 86819, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118741, - "kind": "modifierInvocation", - "modifierName": { - "id": 118739, - "name": "onlyRole", - "nameLocations": [ - "6955:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "6955:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "6955:24:163" - } - ], - "name": "bulkOverrideTiers", - "nameLocation": "6876:17:163", - "parameters": { - "id": 118738, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86815, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "6822:8:147", - "nodeType": "VariableDeclaration", - "scope": 86885, - "src": "6803:27:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118733, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "6913:8:163", - "nodeType": "VariableDeclaration", - "scope": 118809, - "src": "6894:27:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86813, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6803:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118731, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6894:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86814, - "nodeType": "ArrayTypeName", - "src": "6803:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86814, - "nodeType": "ArrayTypeName", - "src": "6803:9:147", -======= - "id": 118732, - "nodeType": "ArrayTypeName", - "src": "6894:9:163", ->>>>>>> Stashed changes -======= - "id": 118732, - "nodeType": "ArrayTypeName", - "src": "6894:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86818, - "mutability": "mutable", - "name": "tiers", - "nameLocation": "6851:5:147", - "nodeType": "VariableDeclaration", - "scope": 86885, - "src": "6832:24:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 86816, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6832:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 86817, - "nodeType": "ArrayTypeName", - "src": "6832:9:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118737, - "mutability": "mutable", - "name": "tiers", - "nameLocation": "6939:5:163", - "nodeType": "VariableDeclaration", - "scope": 118809, - "src": "6923:21:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_calldata_ptr", - "typeString": "enum INSDomainPrice.Tier[]" - }, - "typeName": { - "baseType": { - "id": 118735, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118734, - "name": "Tier", - "nameLocations": [ - "6923:4:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123312, - "src": "6923:4:163" - }, - "referencedDeclaration": 123312, - "src": "6923:4:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "id": 118736, - "nodeType": "ArrayTypeName", - "src": "6923:6:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_storage_ptr", - "typeString": "enum INSDomainPrice.Tier[]" -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "6802:55:147" - }, - "returnParameters": { - "id": 86823, - "nodeType": "ParameterList", - "parameters": [], - "src": "6892:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "src": "6893:52:163" - }, - "returnParameters": { - "id": 118742, - "nodeType": "ParameterList", - "parameters": [], - "src": "6980:0:163" - }, - "scope": 119626, -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86963, - "nodeType": "FunctionDefinition", - "src": "7366:610:147", - "nodes": [], - "body": { - "id": 86962, - "nodeType": "Block", - "src": "7602:374:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118887, - "nodeType": "FunctionDefinition", - "src": "7453:610:163", - "nodes": [], - "body": { - "id": 118886, - "nodeType": "Block", - "src": "7689:374:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86908 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86908 -======= - 118832 ->>>>>>> Stashed changes -======= - 118832 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86908, - "mutability": "mutable", - "name": "length", - "nameLocation": "7616:6:147", - "nodeType": "VariableDeclaration", - "scope": 86962, - "src": "7608:14:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118832, - "mutability": "mutable", - "name": "length", - "nameLocation": "7703:6:163", - "nodeType": "VariableDeclaration", - "scope": 118886, - "src": "7695:14:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86907, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7608:7:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "id": 118831, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7695:7:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86915, - "initialValue": { - "arguments": [ - { - "id": 86910, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86889, - "src": "7666:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118839, - "initialValue": { - "arguments": [ - { - "id": 118834, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118813, - "src": "7753:8:163", ->>>>>>> Stashed changes -======= - "id": 118839, - "initialValue": { - "arguments": [ - { - "id": 118834, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118813, - "src": "7753:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86911, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86892, - "src": "7676:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118835, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118816, - "src": "7763:9:163", ->>>>>>> Stashed changes -======= - "id": 118835, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118816, - "src": "7763:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86912, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86895, - "src": "7687:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118836, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118819, - "src": "7774:11:163", ->>>>>>> Stashed changes -======= - "id": 118836, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118819, - "src": "7774:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86913, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86898, - "src": "7700:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118837, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118822, - "src": "7787:8:163", ->>>>>>> Stashed changes -======= - "id": 118837, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118822, - "src": "7787:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86909, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87423, - "src": "7625:40:147", -<<<<<<< Updated upstream -======= -======= - "id": 118833, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119185, - "src": "7712:40:163", ->>>>>>> Stashed changes -======= - "id": 118833, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119185, - "src": "7712:40:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_uint256_$", - "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86914, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86914, -======= - "id": 118838, ->>>>>>> Stashed changes -======= - "id": 118838, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7625:84:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7625:84:147", -======= - "src": "7712:84:163", ->>>>>>> Stashed changes -======= - "src": "7712:84:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7608:101:147" - }, - { - "assignments": [ - 86917 -<<<<<<< Updated upstream -======= -======= - "src": "7695:101:163" - }, - { - "assignments": [ - 118841 ->>>>>>> Stashed changes -======= - "src": "7695:101:163" - }, - { - "assignments": [ - 118841 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86917, - "mutability": "mutable", - "name": "operator", - "nameLocation": "7723:8:147", - "nodeType": "VariableDeclaration", - "scope": 86962, - "src": "7715:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118841, - "mutability": "mutable", - "name": "operator", - "nameLocation": "7810:8:163", - "nodeType": "VariableDeclaration", - "scope": 118886, - "src": "7802:16:163", ->>>>>>> Stashed changes -======= - "id": 118841, - "mutability": "mutable", - "name": "operator", - "nameLocation": "7810:8:163", - "nodeType": "VariableDeclaration", - "scope": 118886, - "src": "7802:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86916, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7715:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118840, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7802:7:163", ->>>>>>> Stashed changes -======= - "id": 118840, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7802:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 86920, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86920, -======= - "id": 118844, ->>>>>>> Stashed changes -======= - "id": 118844, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86918, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "7734:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 118842, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "7821:10:163", ->>>>>>> Stashed changes -======= - "id": 118842, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "7821:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 86919, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86919, -======= - "id": 118843, ->>>>>>> Stashed changes -======= - "id": 118843, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7734:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7734:12:147", -======= - "src": "7821:12:163", ->>>>>>> Stashed changes -======= - "src": "7821:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7715:31:147" - }, - { - "expression": { - "id": 86927, -<<<<<<< Updated upstream -======= -======= - "src": "7802:31:163" - }, - { - "expression": { - "id": 118851, ->>>>>>> Stashed changes -======= - "src": "7802:31:163" - }, - { - "expression": { - "id": 118851, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86921, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86905, - "src": "7752:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118845, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118829, - "src": "7839:7:163", ->>>>>>> Stashed changes -======= - "id": 118845, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118829, - "src": "7839:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86925, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86908, - "src": "7773:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118849, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118832, - "src": "7860:6:163", ->>>>>>> Stashed changes -======= - "id": 118849, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118832, - "src": "7860:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream - "id": 86924, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86924, -======= - "id": 118848, ->>>>>>> Stashed changes -======= - "id": 118848, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", -<<<<<<< Updated upstream - "src": "7762:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7762:10:147", -======= - "src": "7849:10:163", ->>>>>>> Stashed changes -======= - "src": "7849:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (bool[] memory)" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86922, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7766:4:147", -<<<<<<< Updated upstream -======= -======= - "id": 118846, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7853:4:163", ->>>>>>> Stashed changes -======= - "id": 118846, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7853:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "id": 86923, - "nodeType": "ArrayTypeName", - "src": "7766:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86923, - "nodeType": "ArrayTypeName", - "src": "7766:6:147", -======= - "id": 118847, - "nodeType": "ArrayTypeName", - "src": "7853:6:163", ->>>>>>> Stashed changes -======= - "id": 118847, - "nodeType": "ArrayTypeName", - "src": "7853:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" - } - } - }, -<<<<<<< Updated upstream - "id": 86926, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86926, -======= - "id": 118850, ->>>>>>> Stashed changes -======= - "id": 118850, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7762:18:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7762:18:147", -======= - "src": "7849:18:163", ->>>>>>> Stashed changes -======= - "src": "7849:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, -<<<<<<< Updated upstream - "src": "7752:28:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7752:28:147", -======= - "src": "7839:28:163", ->>>>>>> Stashed changes -======= - "src": "7839:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86928, - "nodeType": "ExpressionStatement", - "src": "7752:28:147" - }, - { - "body": { - "id": 86960, - "nodeType": "Block", - "src": "7816:156:147", - "statements": [ - { - "expression": { - "id": 86954, -<<<<<<< Updated upstream -======= -======= - "id": 118852, - "nodeType": "ExpressionStatement", - "src": "7839:28:163" - }, - { - "body": { - "id": 118884, - "nodeType": "Block", - "src": "7903:156:163", - "statements": [ - { - "expression": { - "id": 118878, ->>>>>>> Stashed changes -======= - "id": 118852, - "nodeType": "ExpressionStatement", - "src": "7839:28:163" - }, - { - "body": { - "id": 118884, - "nodeType": "Block", - "src": "7903:156:163", - "statements": [ - { - "expression": { - "id": 118878, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86935, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86905, - "src": "7824:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118859, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118829, - "src": "7911:7:163", ->>>>>>> Stashed changes -======= - "id": 118859, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118829, - "src": "7911:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86937, - "indexExpression": { - "id": 86936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7832:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118861, - "indexExpression": { - "id": 118860, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7919:1:163", ->>>>>>> Stashed changes -======= - "id": 118861, - "indexExpression": { - "id": 118860, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7919:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7824:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7824:10:147", -======= - "src": "7911:10:163", ->>>>>>> Stashed changes -======= - "src": "7911:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86939, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86917, - "src": "7853:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118863, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118841, - "src": "7940:8:163", ->>>>>>> Stashed changes -======= - "id": 118863, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118841, - "src": "7940:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86940, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86889, - "src": "7863:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118864, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118813, - "src": "7950:8:163", ->>>>>>> Stashed changes -======= - "id": 118864, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118813, - "src": "7950:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86942, - "indexExpression": { - "id": 86941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7872:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118866, - "indexExpression": { - "id": 118865, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7959:1:163", ->>>>>>> Stashed changes -======= - "id": 118866, - "indexExpression": { - "id": 118865, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7959:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7863:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7863:11:147", -======= - "src": "7950:11:163", ->>>>>>> Stashed changes -======= - "src": "7950:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86943, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86892, - "src": "7876:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118867, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118816, - "src": "7963:9:163", ->>>>>>> Stashed changes -======= - "id": 118867, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118816, - "src": "7963:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86945, - "indexExpression": { - "id": 86944, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7886:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118869, - "indexExpression": { - "id": 118868, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7973:1:163", ->>>>>>> Stashed changes -======= - "id": 118869, - "indexExpression": { - "id": 118868, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7973:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7876:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7876:12:147", -======= - "src": "7963:12:163", ->>>>>>> Stashed changes -======= - "src": "7963:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86946, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86895, - "src": "7890:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118870, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118819, - "src": "7977:11:163", ->>>>>>> Stashed changes -======= - "id": 118870, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118819, - "src": "7977:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86948, - "indexExpression": { - "id": 86947, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7902:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118872, - "indexExpression": { - "id": 118871, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7989:1:163", ->>>>>>> Stashed changes -======= - "id": 118872, - "indexExpression": { - "id": 118871, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7989:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7890:14:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7890:14:147", -======= - "src": "7977:14:163", ->>>>>>> Stashed changes -======= - "src": "7977:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86949, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86898, - "src": "7906:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118873, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118822, - "src": "7993:8:163", ->>>>>>> Stashed changes -======= - "id": 118873, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118822, - "src": "7993:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86951, - "indexExpression": { - "id": 86950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7915:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118875, - "indexExpression": { - "id": 118874, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "8002:1:163", ->>>>>>> Stashed changes -======= - "id": 118875, - "indexExpression": { - "id": 118874, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "8002:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "7906:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7906:11:147", -======= - "src": "7993:11:163", ->>>>>>> Stashed changes -======= - "src": "7993:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", -<<<<<<< Updated upstream - "id": 86952, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86952, -======= - "id": 118876, ->>>>>>> Stashed changes -======= - "id": 118876, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "7919:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7919:5:147", -======= - "src": "8006:5:163", ->>>>>>> Stashed changes -======= - "src": "8006:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86938, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87488, - "src": "7837:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118862, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119250, - "src": "7924:15:163", ->>>>>>> Stashed changes -======= - "id": 118862, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119250, - "src": "7924:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" - } - }, -<<<<<<< Updated upstream - "id": 86953, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86953, -======= - "id": 118877, ->>>>>>> Stashed changes -======= - "id": 118877, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "7837:88:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7837:88:147", -======= - "src": "7924:88:163", ->>>>>>> Stashed changes -======= - "src": "7924:88:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "7824:101:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7824:101:147", -======= - "src": "7911:101:163", ->>>>>>> Stashed changes -======= - "src": "7911:101:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86955, - "nodeType": "ExpressionStatement", - "src": "7824:101:147" - }, - { - "id": 86959, - "nodeType": "UncheckedBlock", - "src": "7934:32:147", - "statements": [ - { - "expression": { - "id": 86957, -<<<<<<< Updated upstream -======= -======= - "id": 118879, - "nodeType": "ExpressionStatement", - "src": "7911:101:163" - }, - { - "id": 118883, - "nodeType": "UncheckedBlock", - "src": "8021:32:163", - "statements": [ - { - "expression": { - "id": 118881, ->>>>>>> Stashed changes -======= - "id": 118879, - "nodeType": "ExpressionStatement", - "src": "7911:101:163" - }, - { - "id": 118883, - "nodeType": "UncheckedBlock", - "src": "8021:32:163", - "statements": [ - { - "expression": { - "id": 118881, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7954:3:147", - "subExpression": { - "id": 86956, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7956:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "8041:3:163", - "subExpression": { - "id": 118880, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "8043:1:163", ->>>>>>> Stashed changes -======= - "src": "8041:3:163", - "subExpression": { - "id": 118880, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "8043:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86958, - "nodeType": "ExpressionStatement", - "src": "7954:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86958, - "nodeType": "ExpressionStatement", - "src": "7954:3:147" -======= - "id": 118882, - "nodeType": "ExpressionStatement", - "src": "8041:3:163" ->>>>>>> Stashed changes -======= - "id": 118882, - "nodeType": "ExpressionStatement", - "src": "8041:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 86934, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86934, -======= - "id": 118858, ->>>>>>> Stashed changes -======= - "id": 118858, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86930, - "src": "7803:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118856, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7890:1:163", ->>>>>>> Stashed changes -======= - "id": 118856, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118854, - "src": "7890:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86933, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86908, - "src": "7807:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118857, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118832, - "src": "7894:6:163", ->>>>>>> Stashed changes -======= - "id": 118857, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118832, - "src": "7894:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "7803:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7803:10:147", -======= - "src": "7890:10:163", ->>>>>>> Stashed changes -======= - "src": "7890:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86961, - "initializationExpression": { - "assignments": [ - 86930 -<<<<<<< Updated upstream -======= -======= - "id": 118885, - "initializationExpression": { - "assignments": [ - 118854 ->>>>>>> Stashed changes -======= - "id": 118885, - "initializationExpression": { - "assignments": [ - 118854 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86930, - "mutability": "mutable", - "name": "i", - "nameLocation": "7800:1:147", - "nodeType": "VariableDeclaration", - "scope": 86961, - "src": "7792:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118854, - "mutability": "mutable", - "name": "i", - "nameLocation": "7887:1:163", - "nodeType": "VariableDeclaration", - "scope": 118885, - "src": "7879:9:163", ->>>>>>> Stashed changes -======= - "id": 118854, - "mutability": "mutable", - "name": "i", - "nameLocation": "7887:1:163", - "nodeType": "VariableDeclaration", - "scope": 118885, - "src": "7879:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86929, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7792:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118853, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7879:7:163", ->>>>>>> Stashed changes -======= - "id": 118853, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7879:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86931, - "nodeType": "VariableDeclarationStatement", - "src": "7792:9:147" - }, - "nodeType": "ForStatement", - "src": "7787:185:147" -<<<<<<< Updated upstream -======= -======= - "id": 118855, - "nodeType": "VariableDeclarationStatement", - "src": "7879:9:163" - }, - "nodeType": "ForStatement", - "src": "7874:185:163" ->>>>>>> Stashed changes -======= - "id": 118855, - "nodeType": "VariableDeclarationStatement", - "src": "7879:9:163" - }, - "nodeType": "ForStatement", - "src": "7874:185:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91607 - ], - "documentation": { - "id": 86886, - "nodeType": "StructuredDocumentation", - "src": "7322:41:147", -<<<<<<< Updated upstream -======= -======= - 123552 - ], - "documentation": { - "id": 118810, - "nodeType": "StructuredDocumentation", - "src": "7409:41:163", ->>>>>>> Stashed changes -======= - 123552 - ], - "documentation": { - "id": 118810, - "nodeType": "StructuredDocumentation", - "src": "7409:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "53faf909", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86901, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86374, - "src": "7555:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 118825, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118289, - "src": "7642:13:163", ->>>>>>> Stashed changes -======= - "id": 118825, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118289, - "src": "7642:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86902, - "kind": "modifierInvocation", - "modifierName": { - "id": 86900, - "name": "onlyRole", - "nameLocations": [ - "7546:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "7546:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "7546:23:147" - } - ], - "name": "bulkTrySetDomainPrice", - "nameLocation": "7375:21:147", - "parameters": { - "id": 86899, -<<<<<<< Updated upstream -======= -======= - "id": 118826, - "kind": "modifierInvocation", - "modifierName": { - "id": 118824, - "name": "onlyRole", - "nameLocations": [ - "7633:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "7633:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "7633:23:163" - } - ], - "name": "bulkTrySetDomainPrice", - "nameLocation": "7462:21:163", - "parameters": { - "id": 118823, ->>>>>>> Stashed changes -======= - "id": 118826, - "kind": "modifierInvocation", - "modifierName": { - "id": 118824, - "name": "onlyRole", - "nameLocations": [ - "7633:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "7633:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "7633:23:163" - } - ], - "name": "bulkTrySetDomainPrice", - "nameLocation": "7462:21:163", - "parameters": { - "id": 118823, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86889, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "7421:8:147", - "nodeType": "VariableDeclaration", - "scope": 86963, - "src": "7402:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118813, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "7508:8:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7489:27:163", ->>>>>>> Stashed changes -======= - "id": 118813, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "7508:8:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7489:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86887, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7402:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118811, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7489:7:163", ->>>>>>> Stashed changes -======= - "id": 118811, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7489:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86888, - "nodeType": "ArrayTypeName", - "src": "7402:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86888, - "nodeType": "ArrayTypeName", - "src": "7402:9:147", -======= - "id": 118812, - "nodeType": "ArrayTypeName", - "src": "7489:9:163", ->>>>>>> Stashed changes -======= - "id": 118812, - "nodeType": "ArrayTypeName", - "src": "7489:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86892, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "7454:9:147", - "nodeType": "VariableDeclaration", - "scope": 86963, - "src": "7435:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 118816, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "7541:9:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7522:28:163", ->>>>>>> Stashed changes -======= - "id": 118816, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "7541:9:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7522:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86890, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7435:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118814, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7522:7:163", ->>>>>>> Stashed changes -======= - "id": 118814, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7522:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86891, - "nodeType": "ArrayTypeName", - "src": "7435:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86891, - "nodeType": "ArrayTypeName", - "src": "7435:9:147", -======= - "id": 118815, - "nodeType": "ArrayTypeName", - "src": "7522:9:163", ->>>>>>> Stashed changes -======= - "id": 118815, - "nodeType": "ArrayTypeName", - "src": "7522:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86895, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "7488:11:147", - "nodeType": "VariableDeclaration", - "scope": 86963, - "src": "7469:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118819, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "7575:11:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7556:30:163", ->>>>>>> Stashed changes -======= - "id": 118819, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "7575:11:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7556:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86893, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7469:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118817, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7556:7:163", ->>>>>>> Stashed changes -======= - "id": 118817, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7556:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86894, - "nodeType": "ArrayTypeName", - "src": "7469:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86894, - "nodeType": "ArrayTypeName", - "src": "7469:9:147", -======= - "id": 118818, - "nodeType": "ArrayTypeName", - "src": "7556:9:163", ->>>>>>> Stashed changes -======= - "id": 118818, - "nodeType": "ArrayTypeName", - "src": "7556:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86898, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "7524:8:147", - "nodeType": "VariableDeclaration", - "scope": 86963, - "src": "7505:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118822, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "7611:8:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7592:27:163", ->>>>>>> Stashed changes -======= - "id": 118822, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "7611:8:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7592:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86896, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7505:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7592:7:163", ->>>>>>> Stashed changes -======= - "id": 118820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7592:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86897, - "nodeType": "ArrayTypeName", - "src": "7505:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86897, - "nodeType": "ArrayTypeName", - "src": "7505:9:147", -======= - "id": 118821, - "nodeType": "ArrayTypeName", - "src": "7592:9:163", ->>>>>>> Stashed changes -======= - "id": 118821, - "nodeType": "ArrayTypeName", - "src": "7592:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "7396:140:147" - }, - "returnParameters": { - "id": 86906, -<<<<<<< Updated upstream -======= -======= - "src": "7483:140:163" - }, - "returnParameters": { - "id": 118830, ->>>>>>> Stashed changes -======= - "src": "7483:140:163" - }, - "returnParameters": { - "id": 118830, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86905, - "mutability": "mutable", - "name": "updated", - "nameLocation": "7593:7:147", - "nodeType": "VariableDeclaration", - "scope": 86963, - "src": "7579:21:147", -<<<<<<< Updated upstream -======= -======= - "id": 118829, - "mutability": "mutable", - "name": "updated", - "nameLocation": "7680:7:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7666:21:163", ->>>>>>> Stashed changes -======= - "id": 118829, - "mutability": "mutable", - "name": "updated", - "nameLocation": "7680:7:163", - "nodeType": "VariableDeclaration", - "scope": 118887, - "src": "7666:21:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86903, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7579:4:147", -<<<<<<< Updated upstream -======= -======= - "id": 118827, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7666:4:163", ->>>>>>> Stashed changes -======= - "id": 118827, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7666:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "id": 86904, - "nodeType": "ArrayTypeName", - "src": "7579:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86904, - "nodeType": "ArrayTypeName", - "src": "7579:6:147", -======= - "id": 118828, - "nodeType": "ArrayTypeName", - "src": "7666:6:163", ->>>>>>> Stashed changes -======= - "id": 118828, - "nodeType": "ArrayTypeName", - "src": "7666:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "7578:23:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "7578:23:147" - }, - "scope": 87685, -======= - "src": "7665:23:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "7665:23:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87026, - "nodeType": "FunctionDefinition", - "src": "8024:527:147", - "nodes": [], - "body": { - "id": 87025, - "nodeType": "Block", - "src": "8226:325:147", -<<<<<<< Updated upstream -======= -======= - "id": 118950, - "nodeType": "FunctionDefinition", - "src": "8111:527:163", - "nodes": [], - "body": { - "id": 118949, - "nodeType": "Block", - "src": "8313:325:163", ->>>>>>> Stashed changes -======= - "id": 118950, - "nodeType": "FunctionDefinition", - "src": "8111:527:163", - "nodes": [], - "body": { - "id": 118949, - "nodeType": "Block", - "src": "8313:325:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 86983 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 86983 -======= - 118907 ->>>>>>> Stashed changes -======= - 118907 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86983, - "mutability": "mutable", - "name": "length", - "nameLocation": "8240:6:147", - "nodeType": "VariableDeclaration", - "scope": 87025, - "src": "8232:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118907, - "mutability": "mutable", - "name": "length", - "nameLocation": "8327:6:163", - "nodeType": "VariableDeclaration", - "scope": 118949, - "src": "8319:14:163", ->>>>>>> Stashed changes -======= - "id": 118907, - "mutability": "mutable", - "name": "length", - "nameLocation": "8327:6:163", - "nodeType": "VariableDeclaration", - "scope": 118949, - "src": "8319:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86982, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8232:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118906, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8319:7:163", ->>>>>>> Stashed changes -======= - "id": 118906, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8319:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86990, - "initialValue": { - "arguments": [ - { - "id": 86985, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86967, - "src": "8290:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118914, - "initialValue": { - "arguments": [ - { - "id": 118909, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118891, - "src": "8377:8:163", ->>>>>>> Stashed changes -======= - "id": 118914, - "initialValue": { - "arguments": [ - { - "id": 118909, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118891, - "src": "8377:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86986, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86970, - "src": "8300:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118910, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118894, - "src": "8387:9:163", ->>>>>>> Stashed changes -======= - "id": 118910, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118894, - "src": "8387:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86987, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86973, - "src": "8311:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118911, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118897, - "src": "8398:11:163", ->>>>>>> Stashed changes -======= - "id": 118911, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118897, - "src": "8398:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86988, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86976, - "src": "8324:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118912, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118900, - "src": "8411:8:163", ->>>>>>> Stashed changes -======= - "id": 118912, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118900, - "src": "8411:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86984, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87423, - "src": "8249:40:147", -<<<<<<< Updated upstream -======= -======= - "id": 118908, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119185, - "src": "8336:40:163", ->>>>>>> Stashed changes -======= - "id": 118908, - "name": "_requireBulkSetDomainPriceArgumentsValid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119185, - "src": "8336:40:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$returns$_t_uint256_$", - "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 86989, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86989, -======= - "id": 118913, ->>>>>>> Stashed changes -======= - "id": 118913, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8249:84:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8249:84:147", -======= - "src": "8336:84:163", ->>>>>>> Stashed changes -======= - "src": "8336:84:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8232:101:147" - }, - { - "assignments": [ - 86992 -<<<<<<< Updated upstream -======= -======= - "src": "8319:101:163" - }, - { - "assignments": [ - 118916 ->>>>>>> Stashed changes -======= - "src": "8319:101:163" - }, - { - "assignments": [ - 118916 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86992, - "mutability": "mutable", - "name": "operator", - "nameLocation": "8347:8:147", - "nodeType": "VariableDeclaration", - "scope": 87025, - "src": "8339:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118916, - "mutability": "mutable", - "name": "operator", - "nameLocation": "8434:8:163", - "nodeType": "VariableDeclaration", - "scope": 118949, - "src": "8426:16:163", ->>>>>>> Stashed changes -======= - "id": 118916, - "mutability": "mutable", - "name": "operator", - "nameLocation": "8434:8:163", - "nodeType": "VariableDeclaration", - "scope": 118949, - "src": "8426:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86991, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8339:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118915, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8426:7:163", ->>>>>>> Stashed changes -======= - "id": 118915, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8426:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 86995, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86995, -======= - "id": 118919, ->>>>>>> Stashed changes -======= - "id": 118919, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86993, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "8358:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 118917, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "8445:10:163", ->>>>>>> Stashed changes -======= - "id": 118917, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "8445:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 86994, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86994, -======= - "id": 118918, ->>>>>>> Stashed changes -======= - "id": 118918, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8358:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8358:12:147", -======= - "src": "8445:12:163", ->>>>>>> Stashed changes -======= - "src": "8445:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8339:31:147" - }, - { - "body": { - "id": 87023, - "nodeType": "Block", - "src": "8406:141:147", -<<<<<<< Updated upstream -======= -======= - "src": "8426:31:163" - }, - { - "body": { - "id": 118947, - "nodeType": "Block", - "src": "8493:141:163", ->>>>>>> Stashed changes -======= - "src": "8426:31:163" - }, - { - "body": { - "id": 118947, - "nodeType": "Block", - "src": "8493:141:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87003, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86992, - "src": "8430:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118927, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118916, - "src": "8517:8:163", ->>>>>>> Stashed changes -======= - "id": 118927, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118916, - "src": "8517:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87004, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86967, - "src": "8440:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118928, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118891, - "src": "8527:8:163", ->>>>>>> Stashed changes -======= - "id": 118928, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118891, - "src": "8527:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87006, - "indexExpression": { - "id": 87005, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8449:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118930, - "indexExpression": { - "id": 118929, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8536:1:163", ->>>>>>> Stashed changes -======= - "id": 118930, - "indexExpression": { - "id": 118929, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8536:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "8440:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8440:11:147", -======= - "src": "8527:11:163", ->>>>>>> Stashed changes -======= - "src": "8527:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87007, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86970, - "src": "8453:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118931, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118894, - "src": "8540:9:163", ->>>>>>> Stashed changes -======= - "id": 118931, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118894, - "src": "8540:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87009, - "indexExpression": { - "id": 87008, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8463:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118933, - "indexExpression": { - "id": 118932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8550:1:163", ->>>>>>> Stashed changes -======= - "id": 118933, - "indexExpression": { - "id": 118932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8550:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "8453:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8453:12:147", -======= - "src": "8540:12:163", ->>>>>>> Stashed changes -======= - "src": "8540:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87010, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86973, - "src": "8467:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 118934, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118897, - "src": "8554:11:163", ->>>>>>> Stashed changes -======= - "id": 118934, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118897, - "src": "8554:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87012, - "indexExpression": { - "id": 87011, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8479:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118936, - "indexExpression": { - "id": 118935, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8566:1:163", ->>>>>>> Stashed changes -======= - "id": 118936, - "indexExpression": { - "id": 118935, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8566:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "8467:14:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8467:14:147", -======= - "src": "8554:14:163", ->>>>>>> Stashed changes -======= - "src": "8554:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87013, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86976, - "src": "8483:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118937, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118900, - "src": "8570:8:163", ->>>>>>> Stashed changes -======= - "id": 118937, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118900, - "src": "8570:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87015, - "indexExpression": { - "id": 87014, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8492:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118939, - "indexExpression": { - "id": 118938, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8579:1:163", ->>>>>>> Stashed changes -======= - "id": 118939, - "indexExpression": { - "id": 118938, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8579:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "8483:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8483:11:147", -======= - "src": "8570:11:163", ->>>>>>> Stashed changes -======= - "src": "8570:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", -<<<<<<< Updated upstream - "id": 87016, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87016, -======= - "id": 118940, ->>>>>>> Stashed changes -======= - "id": 118940, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "8496:4:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8496:4:147", -======= - "src": "8583:4:163", ->>>>>>> Stashed changes -======= - "src": "8583:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87002, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87488, - "src": "8414:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118926, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119250, - "src": "8501:15:163", ->>>>>>> Stashed changes -======= - "id": 118926, - "name": "_setDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119250, - "src": "8501:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bool_$returns$_t_bool_$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" - } - }, -<<<<<<< Updated upstream - "id": 87017, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87017, -======= - "id": 118941, ->>>>>>> Stashed changes -======= - "id": 118941, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8414:87:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8414:87:147", -======= - "src": "8501:87:163", ->>>>>>> Stashed changes -======= - "src": "8501:87:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87018, - "nodeType": "ExpressionStatement", - "src": "8414:87:147" - }, - { - "id": 87022, - "nodeType": "UncheckedBlock", - "src": "8509:32:147", - "statements": [ - { - "expression": { - "id": 87020, -<<<<<<< Updated upstream -======= -======= - "id": 118942, - "nodeType": "ExpressionStatement", - "src": "8501:87:163" - }, - { - "id": 118946, - "nodeType": "UncheckedBlock", - "src": "8596:32:163", - "statements": [ - { - "expression": { - "id": 118944, ->>>>>>> Stashed changes -======= - "id": 118942, - "nodeType": "ExpressionStatement", - "src": "8501:87:163" - }, - { - "id": 118946, - "nodeType": "UncheckedBlock", - "src": "8596:32:163", - "statements": [ - { - "expression": { - "id": 118944, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8529:3:147", - "subExpression": { - "id": 87019, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8531:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "8616:3:163", - "subExpression": { - "id": 118943, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8618:1:163", ->>>>>>> Stashed changes -======= - "src": "8616:3:163", - "subExpression": { - "id": 118943, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8618:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87021, - "nodeType": "ExpressionStatement", - "src": "8529:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87021, - "nodeType": "ExpressionStatement", - "src": "8529:3:147" -======= - "id": 118945, - "nodeType": "ExpressionStatement", - "src": "8616:3:163" ->>>>>>> Stashed changes -======= - "id": 118945, - "nodeType": "ExpressionStatement", - "src": "8616:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87001, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87001, -======= - "id": 118925, ->>>>>>> Stashed changes -======= - "id": 118925, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86999, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86997, - "src": "8393:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 118923, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8480:1:163", ->>>>>>> Stashed changes -======= - "id": 118923, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118921, - "src": "8480:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87000, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86983, - "src": "8397:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118924, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118907, - "src": "8484:6:163", ->>>>>>> Stashed changes -======= - "id": 118924, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118907, - "src": "8484:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "8393:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8393:10:147", -======= - "src": "8480:10:163", ->>>>>>> Stashed changes -======= - "src": "8480:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87024, - "initializationExpression": { - "assignments": [ - 86997 -<<<<<<< Updated upstream -======= -======= - "id": 118948, - "initializationExpression": { - "assignments": [ - 118921 ->>>>>>> Stashed changes -======= - "id": 118948, - "initializationExpression": { - "assignments": [ - 118921 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86997, - "mutability": "mutable", - "name": "i", - "nameLocation": "8390:1:147", - "nodeType": "VariableDeclaration", - "scope": 87024, - "src": "8382:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 118921, - "mutability": "mutable", - "name": "i", - "nameLocation": "8477:1:163", - "nodeType": "VariableDeclaration", - "scope": 118948, - "src": "8469:9:163", ->>>>>>> Stashed changes -======= - "id": 118921, - "mutability": "mutable", - "name": "i", - "nameLocation": "8477:1:163", - "nodeType": "VariableDeclaration", - "scope": 118948, - "src": "8469:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86996, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8382:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118920, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8469:7:163", ->>>>>>> Stashed changes -======= - "id": 118920, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8469:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86998, - "nodeType": "VariableDeclarationStatement", - "src": "8382:9:147" - }, - "nodeType": "ForStatement", - "src": "8377:170:147" -<<<<<<< Updated upstream -======= -======= - "id": 118922, - "nodeType": "VariableDeclarationStatement", - "src": "8469:9:163" - }, - "nodeType": "ForStatement", - "src": "8464:170:163" ->>>>>>> Stashed changes -======= - "id": 118922, - "nodeType": "VariableDeclarationStatement", - "src": "8469:9:163" - }, - "nodeType": "ForStatement", - "src": "8464:170:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91623 - ], - "documentation": { - "id": 86964, - "nodeType": "StructuredDocumentation", - "src": "7980:41:147", -<<<<<<< Updated upstream -======= -======= - 123568 - ], - "documentation": { - "id": 118888, - "nodeType": "StructuredDocumentation", - "src": "8067:41:163", ->>>>>>> Stashed changes -======= - 123568 - ], - "documentation": { - "id": 118888, - "nodeType": "StructuredDocumentation", - "src": "8067:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "599eaabf", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86979, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86380, - "src": "8210:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118903, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118295, - "src": "8297:14:163", ->>>>>>> Stashed changes -======= - "id": 118903, - "name": "OVERRIDER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118295, - "src": "8297:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86980, - "kind": "modifierInvocation", - "modifierName": { - "id": 86978, - "name": "onlyRole", - "nameLocations": [ - "8201:8:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68931, - "src": "8201:8:147" - }, - "nodeType": "ModifierInvocation", - "src": "8201:24:147" - } - ], - "name": "bulkSetDomainPrice", - "nameLocation": "8033:18:147", - "parameters": { - "id": 86977, -<<<<<<< Updated upstream -======= -======= - "id": 118904, - "kind": "modifierInvocation", - "modifierName": { - "id": 118902, - "name": "onlyRole", - "nameLocations": [ - "8288:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "8288:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "8288:24:163" - } - ], - "name": "bulkSetDomainPrice", - "nameLocation": "8120:18:163", - "parameters": { - "id": 118901, ->>>>>>> Stashed changes -======= - "id": 118904, - "kind": "modifierInvocation", - "modifierName": { - "id": 118902, - "name": "onlyRole", - "nameLocations": [ - "8288:8:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 99849, - "src": "8288:8:163" - }, - "nodeType": "ModifierInvocation", - "src": "8288:24:163" - } - ], - "name": "bulkSetDomainPrice", - "nameLocation": "8120:18:163", - "parameters": { - "id": 118901, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86967, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "8076:8:147", - "nodeType": "VariableDeclaration", - "scope": 87026, - "src": "8057:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118891, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "8163:8:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8144:27:163", ->>>>>>> Stashed changes -======= - "id": 118891, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "8163:8:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8144:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86965, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8057:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118889, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8144:7:163", ->>>>>>> Stashed changes -======= - "id": 118889, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8144:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86966, - "nodeType": "ArrayTypeName", - "src": "8057:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86966, - "nodeType": "ArrayTypeName", - "src": "8057:9:147", -======= - "id": 118890, - "nodeType": "ArrayTypeName", - "src": "8144:9:163", ->>>>>>> Stashed changes -======= - "id": 118890, - "nodeType": "ArrayTypeName", - "src": "8144:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86970, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "8109:9:147", - "nodeType": "VariableDeclaration", - "scope": 87026, - "src": "8090:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 118894, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "8196:9:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8177:28:163", ->>>>>>> Stashed changes -======= - "id": 118894, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "8196:9:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8177:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86968, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8090:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118892, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8177:7:163", ->>>>>>> Stashed changes -======= - "id": 118892, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8177:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86969, - "nodeType": "ArrayTypeName", - "src": "8090:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86969, - "nodeType": "ArrayTypeName", - "src": "8090:9:147", -======= - "id": 118893, - "nodeType": "ArrayTypeName", - "src": "8177:9:163", ->>>>>>> Stashed changes -======= - "id": 118893, - "nodeType": "ArrayTypeName", - "src": "8177:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86973, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "8143:11:147", - "nodeType": "VariableDeclaration", - "scope": 87026, - "src": "8124:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 118897, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "8230:11:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8211:30:163", ->>>>>>> Stashed changes -======= - "id": 118897, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "8230:11:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8211:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86971, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8124:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118895, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8211:7:163", ->>>>>>> Stashed changes -======= - "id": 118895, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8211:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 86972, - "nodeType": "ArrayTypeName", - "src": "8124:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86972, - "nodeType": "ArrayTypeName", - "src": "8124:9:147", -======= - "id": 118896, - "nodeType": "ArrayTypeName", - "src": "8211:9:163", ->>>>>>> Stashed changes -======= - "id": 118896, - "nodeType": "ArrayTypeName", - "src": "8211:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86976, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "8179:8:147", - "nodeType": "VariableDeclaration", - "scope": 87026, - "src": "8160:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 118900, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "8266:8:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8247:27:163", ->>>>>>> Stashed changes -======= - "id": 118900, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "8266:8:163", - "nodeType": "VariableDeclaration", - "scope": 118950, - "src": "8247:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86974, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8160:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118898, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8247:7:163", ->>>>>>> Stashed changes -======= - "id": 118898, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8247:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 86975, - "nodeType": "ArrayTypeName", - "src": "8160:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 86975, - "nodeType": "ArrayTypeName", - "src": "8160:9:147", -======= - "id": 118899, - "nodeType": "ArrayTypeName", - "src": "8247:9:163", ->>>>>>> Stashed changes -======= - "id": 118899, - "nodeType": "ArrayTypeName", - "src": "8247:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8051:140:147" - }, - "returnParameters": { - "id": 86981, - "nodeType": "ParameterList", - "parameters": [], - "src": "8226:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "8138:140:163" - }, - "returnParameters": { - "id": 118905, - "nodeType": "ParameterList", - "parameters": [], - "src": "8313:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "8138:140:163" - }, - "returnParameters": { - "id": 118905, - "nodeType": "ParameterList", - "parameters": [], - "src": "8313:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87051, - "nodeType": "FunctionDefinition", - "src": "8599:200:147", - "nodes": [], - "body": { - "id": 87050, - "nodeType": "Block", - "src": "8701:98:147", -<<<<<<< Updated upstream -======= -======= - "id": 118975, - "nodeType": "FunctionDefinition", - "src": "8686:200:163", - "nodes": [], - "body": { - "id": 118974, - "nodeType": "Block", - "src": "8788:98:163", ->>>>>>> Stashed changes -======= - "id": 118975, - "nodeType": "FunctionDefinition", - "src": "8686:200:163", - "nodes": [], - "body": { - "id": 118974, - "nodeType": "Block", - "src": "8788:98:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 87042, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87042, -======= - "id": 118966, ->>>>>>> Stashed changes -======= - "id": 118966, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87036, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87032, - "src": "8707:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118960, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118956, - "src": "8794:8:163", ->>>>>>> Stashed changes -======= - "id": 118960, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118956, - "src": "8794:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87038, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87029, - "src": "8734:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118962, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118953, - "src": "8821:5:163", ->>>>>>> Stashed changes -======= - "id": 118962, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118953, - "src": "8821:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, -<<<<<<< Updated upstream - "id": 87039, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87039, -======= - "id": 118963, ->>>>>>> Stashed changes -======= - "id": 118963, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "8740:9:147", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 93096, - "src": "8734:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "8827:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "8821:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "8827:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "8821:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, -<<<<<<< Updated upstream - "id": 87040, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87040, -======= - "id": 118964, ->>>>>>> Stashed changes -======= - "id": 118964, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8734:17:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8734:17:147", -======= - "src": "8821:17:163", ->>>>>>> Stashed changes -======= - "src": "8821:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87037, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87684, - "src": "8718:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118961, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119625, - "src": "8805:15:163", ->>>>>>> Stashed changes -======= - "id": 118961, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119625, - "src": "8805:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87041, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87041, -======= - "id": 118965, ->>>>>>> Stashed changes -======= - "id": 118965, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8718:34:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8718:34:147", -======= - "src": "8805:34:163", ->>>>>>> Stashed changes -======= - "src": "8805:34:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "8707:45:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8707:45:147", -======= - "src": "8794:45:163", ->>>>>>> Stashed changes -======= - "src": "8794:45:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87043, - "nodeType": "ExpressionStatement", - "src": "8707:45:147" - }, - { - "expression": { - "id": 87048, -<<<<<<< Updated upstream -======= -======= - "id": 118967, - "nodeType": "ExpressionStatement", - "src": "8794:45:163" - }, - { - "expression": { - "id": 118972, ->>>>>>> Stashed changes -======= - "id": 118967, - "nodeType": "ExpressionStatement", - "src": "8794:45:163" - }, - { - "expression": { - "id": 118972, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87044, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87034, - "src": "8758:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118968, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118958, - "src": "8845:8:163", ->>>>>>> Stashed changes -======= - "id": 118968, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118958, - "src": "8845:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87046, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87032, - "src": "8785:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 118970, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118956, - "src": "8872:8:163", ->>>>>>> Stashed changes -======= - "id": 118970, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118956, - "src": "8872:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87045, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87350, - "src": "8769:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118969, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119112, - "src": "8856:15:163", ->>>>>>> Stashed changes -======= - "id": 118969, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119112, - "src": "8856:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87047, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87047, -======= - "id": 118971, ->>>>>>> Stashed changes -======= - "id": 118971, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8769:25:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8769:25:147", -======= - "src": "8856:25:163", ->>>>>>> Stashed changes -======= - "src": "8856:25:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "8758:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8758:36:147", -======= - "src": "8845:36:163", ->>>>>>> Stashed changes -======= - "src": "8845:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87049, - "nodeType": "ExpressionStatement", - "src": "8758:36:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87049, - "nodeType": "ExpressionStatement", - "src": "8758:36:147" -======= - "id": 118973, - "nodeType": "ExpressionStatement", - "src": "8845:36:163" ->>>>>>> Stashed changes -======= - "id": 118973, - "nodeType": "ExpressionStatement", - "src": "8845:36:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91530 - ], - "documentation": { - "id": 87027, - "nodeType": "StructuredDocumentation", - "src": "8555:41:147", -<<<<<<< Updated upstream -======= -======= - 123472 - ], - "documentation": { - "id": 118951, - "nodeType": "StructuredDocumentation", - "src": "8642:41:163", ->>>>>>> Stashed changes -======= - 123472 - ], - "documentation": { - "id": 118951, - "nodeType": "StructuredDocumentation", - "src": "8642:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "713a69a7", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDomainPrice", -<<<<<<< Updated upstream - "nameLocation": "8608:14:147", - "parameters": { - "id": 87030, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "8608:14:147", - "parameters": { - "id": 87030, -======= - "nameLocation": "8695:14:163", - "parameters": { - "id": 118954, ->>>>>>> Stashed changes -======= - "nameLocation": "8695:14:163", - "parameters": { - "id": 118954, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87029, - "mutability": "mutable", - "name": "label", - "nameLocation": "8637:5:147", - "nodeType": "VariableDeclaration", - "scope": 87051, - "src": "8623:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 118953, - "mutability": "mutable", - "name": "label", - "nameLocation": "8724:5:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8710:19:163", ->>>>>>> Stashed changes -======= - "id": 118953, - "mutability": "mutable", - "name": "label", - "nameLocation": "8724:5:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8710:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87028, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "8623:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118952, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "8710:6:163", ->>>>>>> Stashed changes -======= - "id": 118952, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "8710:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8622:21:147" - }, - "returnParameters": { - "id": 87035, -<<<<<<< Updated upstream -======= -======= - "src": "8709:21:163" - }, - "returnParameters": { - "id": 118959, ->>>>>>> Stashed changes -======= - "src": "8709:21:163" - }, - "returnParameters": { - "id": 118959, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87032, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "8673:8:147", - "nodeType": "VariableDeclaration", - "scope": 87051, - "src": "8665:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118956, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "8760:8:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8752:16:163", ->>>>>>> Stashed changes -======= - "id": 118956, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "8760:8:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8752:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87031, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8665:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118955, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8752:7:163", ->>>>>>> Stashed changes -======= - "id": 118955, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8752:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87034, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "8691:8:147", - "nodeType": "VariableDeclaration", - "scope": 87051, - "src": "8683:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 118958, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "8778:8:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8770:16:163", ->>>>>>> Stashed changes -======= - "id": 118958, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "8778:8:163", - "nodeType": "VariableDeclaration", - "scope": 118975, - "src": "8770:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87033, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8683:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118957, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8770:7:163", ->>>>>>> Stashed changes -======= - "id": 118957, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8770:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "8664:36:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8664:36:147" - }, - "scope": 87685, -======= - "src": "8751:36:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "8751:36:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87146, - "nodeType": "FunctionDefinition", - "src": "8847:751:147", - "nodes": [], - "body": { - "id": 87145, - "nodeType": "Block", - "src": "8920:678:147", -<<<<<<< Updated upstream -======= -======= - "id": 119045, - "nodeType": "FunctionDefinition", - "src": "8934:631:163", - "nodes": [], - "body": { - "id": 119044, - "nodeType": "Block", - "src": "9004:561:163", ->>>>>>> Stashed changes -======= - "id": 119045, - "nodeType": "FunctionDefinition", - "src": "8934:631:163", - "nodes": [], - "body": { - "id": 119044, - "nodeType": "Block", - "src": "9004:561:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 87060 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87060 -======= - 118985 ->>>>>>> Stashed changes -======= - 118985 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87060, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "8934:6:147", - "nodeType": "VariableDeclaration", - "scope": 87145, - "src": "8926:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 118985, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "9018:6:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9010:14:163", ->>>>>>> Stashed changes -======= - "id": 118985, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "9018:6:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9010:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87059, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8926:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118984, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9010:7:163", ->>>>>>> Stashed changes -======= - "id": 118984, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9010:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 87064, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87064, -======= - "id": 118989, ->>>>>>> Stashed changes -======= - "id": 118989, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87061, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87054, - "src": "8943:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 118986, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118978, - "src": "9027:5:163", ->>>>>>> Stashed changes -======= - "id": 118986, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118978, - "src": "9027:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, -<<<<<<< Updated upstream - "id": 87062, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87062, -======= - "id": 118987, ->>>>>>> Stashed changes -======= - "id": 118987, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "8949:9:147", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 93096, - "src": "8943:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "9033:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "9027:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "9033:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "9027:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, -<<<<<<< Updated upstream - "id": 87063, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87063, -======= - "id": 118988, ->>>>>>> Stashed changes -======= - "id": 118988, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "8943:17:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8943:17:147", -======= - "src": "9027:17:163", ->>>>>>> Stashed changes -======= - "src": "9027:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "8926:34:147" - }, - { - "assignments": [ - 87066 -<<<<<<< Updated upstream -======= -======= - "src": "9010:34:163" - }, - { - "assignments": [ - 118991 ->>>>>>> Stashed changes -======= - "src": "9010:34:163" - }, - { - "assignments": [ - 118991 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87066, - "mutability": "mutable", - "name": "overriddenTier", - "nameLocation": "8974:14:147", - "nodeType": "VariableDeclaration", - "scope": 87145, - "src": "8966:22:147", -<<<<<<< Updated upstream -======= -======= - "id": 118991, - "mutability": "mutable", - "name": "overriddenTier", - "nameLocation": "9056:14:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9050:20:163", ->>>>>>> Stashed changes -======= - "id": 118991, - "mutability": "mutable", - "name": "overriddenTier", - "nameLocation": "9056:14:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9050:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87065, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8966:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 118990, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9050:5:163", ->>>>>>> Stashed changes -======= - "id": 118990, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9050:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87070, - "initialValue": { - "baseExpression": { - "id": 87067, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86430, - "src": "8991:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 118995, - "initialValue": { - "baseExpression": { - "id": 118992, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118345, - "src": "9073:15:163", ->>>>>>> Stashed changes -======= - "id": 118995, - "initialValue": { - "baseExpression": { - "id": 118992, - "name": "_tierOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118345, - "src": "9073:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87069, - "indexExpression": { - "id": 87068, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87060, - "src": "9007:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 118994, - "indexExpression": { - "id": 118993, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118985, - "src": "9089:6:163", ->>>>>>> Stashed changes -======= - "id": 118994, - "indexExpression": { - "id": 118993, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118985, - "src": "9089:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "8991:23:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8991:23:147", -======= -======= ->>>>>>> Stashed changes - "src": "9073:23:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9050:46:163" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 118998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 118996, - "name": "overriddenTier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118991, - "src": "9107:14:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 118997, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9125:1:163", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9107:19:163", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 119004, - "nodeType": "IfStatement", - "src": "9103:53:163", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 119001, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "9140:15:163", - "subExpression": { - "id": 119000, - "name": "overriddenTier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118991, - "src": "9141:14:163", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 118999, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "9135:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 119002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9135:21:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "functionReturnParameters": 118983, - "id": 119003, - "nodeType": "Return", - "src": "9128:28:163" - } - }, - { - "assignments": [ - 119007, - null, - null - ], - "declarations": [ - { - "constant": false, - "id": 119007, - "mutability": "mutable", - "name": "yearlyRenewalFeeByLength", - "nameLocation": "9181:24:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9164:41:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 119006, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119005, - "name": "UnitPrice", - "nameLocations": [ - "9164:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123322, - "src": "9164:9:163" - }, - "referencedDeclaration": 123322, - "src": "9164:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - }, - null, - null - ], - "id": 119012, - "initialValue": { - "arguments": [ - { - "id": 119009, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118978, - "src": "9238:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "hexValue": "333635", - "id": 119010, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9255:8:163", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_31536000_by_1", - "typeString": "int_const 31536000" - }, - "value": "365" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_rational_31536000_by_1", - "typeString": "int_const 31536000" - } - ], - "id": 119008, - "name": "_tryGetRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119583, - "src": "9211:17:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", - "typeString": "function (string memory,uint256) view returns (struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" - } - }, - "id": 119011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ - "9231:5:163", - "9245:8:163" - ], - "names": [ - "label", - "duration" - ], - "nodeType": "FunctionCall", - "src": "9211:55:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", - "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9163:103:163" - }, - { - "assignments": [ - 119014 - ], - "declarations": [ - { - "constant": false, - "id": 119014, - "mutability": "mutable", - "name": "tierValue", - "nameLocation": "9280:9:163", - "nodeType": "VariableDeclaration", - "scope": 119044, - "src": "9272:17:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 119013, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9272:7:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 119023, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 119022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 119015, - "name": "yearlyRenewalFeeByLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119007, - "src": "9292:24:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 119016, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9317:3:163", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 123319, - "src": "9292:28:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 119021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 119018, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118985, - "src": "9339:6:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 119017, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119625, - "src": "9323:15:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 119019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9323:23:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "32", - "id": 119020, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9349:1:163", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "9323:27:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9292:58:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream - "src": "8966:48:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "8966:48:147" -======= - "src": "9272:78:163" ->>>>>>> Stashed changes -======= - "src": "9272:78:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87073, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87073, -======= - "id": 119026, ->>>>>>> Stashed changes -======= - "id": 119026, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87071, - "name": "overriddenTier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87066, - "src": "9025:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 87072, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9043:1:147", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9025:19:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 87077, - "nodeType": "IfStatement", - "src": "9021:47:147", - "trueBody": { - "expression": { - "id": 87075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "9053:15:147", - "subExpression": { - "id": 87074, - "name": "overriddenTier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87066, - "src": "9054:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 87058, - "id": 87076, - "nodeType": "Return", - "src": "9046:22:147" - } - }, - { - "assignments": [ - 87079 - ], - "declarations": [ - { - "constant": false, - "id": 87079, - "mutability": "mutable", - "name": "overriddenRenewalFee", - "nameLocation": "9083:20:147", - "nodeType": "VariableDeclaration", - "scope": 87145, - "src": "9075:28:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87078, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9075:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87083, - "initialValue": { - "baseExpression": { - "id": 87080, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86425, - "src": "9106:16:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 87082, - "indexExpression": { - "id": 87081, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87060, - "src": "9123:6:147", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9106:24:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9075:55:147" - }, - { - "assignments": [ - 87085 - ], - "declarations": [ - { - "constant": false, - "id": 87085, - "mutability": "mutable", - "name": "yearlyRenewalFeeByLength", - "nameLocation": "9144:24:147", - "nodeType": "VariableDeclaration", - "scope": 87145, - "src": "9136:32:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87084, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9136:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87105, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87088, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87086, - "name": "overriddenRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87079, - "src": "9171:20:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 87087, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9195:1:147", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9171:25:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87103, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "333635", - "id": 87093, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9246:8:147", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_31536000_by_1", - "typeString": "int_const 31536000" - }, - "value": "365" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "baseExpression": { - "id": 87094, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86414, - "src": "9257:6:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 87102, - "indexExpression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 87097, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87054, - "src": "9273:5:147", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 87098, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9279:6:147", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 93214, - "src": "9273:12:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 87099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9273:14:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 87100, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "9289:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 87095, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "9264:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$73915_$", - "typeString": "type(library Math)" - } - }, - "id": 87096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9269:3:147", - "memberName": "min", - "nodeType": "MemberAccess", - "referencedDeclaration": 73092, - "src": "9264:8:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 87101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9264:39:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9257:47:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9246:58:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 87104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9171:133:147", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87092, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "333635", - "id": 87089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9205:8:147", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_31536000_by_1", - "typeString": "int_const 31536000" - }, - "value": "365" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 87091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "9216:21:147", - "subExpression": { - "id": 87090, - "name": "overriddenRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87079, - "src": "9217:20:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9205:32:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9136:168:147" - }, - { - "assignments": [ - 87107 - ], - "declarations": [ - { - "constant": false, - "id": 87107, - "mutability": "mutable", - "name": "tierValue", - "nameLocation": "9318:9:147", - "nodeType": "VariableDeclaration", - "scope": 87145, - "src": "9310:17:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87106, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9310:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87115, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87108, - "name": "yearlyRenewalFeeByLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87085, - "src": "9330:24:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 87110, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87060, - "src": "9373:6:147", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 87109, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87684, - "src": "9357:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 87111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9357:23:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "32", - "id": 87112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9383:1:147", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "9357:27:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9330:54:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9310:74:147" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87116, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87107, - "src": "9395:9:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 87117, - "name": "TIER_1_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86356, - "src": "9407:16:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9395:28:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87128, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87126, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87107, - "src": "9476:9:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 87127, - "name": "TIER_2_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86360, - "src": "9488:16:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9476:28:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 87142, - "nodeType": "Block", - "src": "9553:41:147", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 87138, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91371, - "src": "9576:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$91371_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 87139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9581:5:147", - "memberName": "Tier3", - "nodeType": "MemberAccess", - "referencedDeclaration": 91370, - "src": "9576:10:147", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - ], - "id": 87137, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9568:7:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 87136, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9568:7:147", - "typeDescriptions": {} - } - }, - "id": 87140, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9568:19:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 87058, - "id": 87141, - "nodeType": "Return", - "src": "9561:26:147" - } - ] - }, - "id": 87143, - "nodeType": "IfStatement", - "src": "9472:122:147", - "trueBody": { - "id": 87135, - "nodeType": "Block", - "src": "9506:41:147", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 87131, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91371, - "src": "9529:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$91371_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 87132, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9534:5:147", - "memberName": "Tier2", - "nodeType": "MemberAccess", - "referencedDeclaration": 91369, - "src": "9529:10:147", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - ], - "id": 87130, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9521:7:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 87129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9521:7:147", - "typeDescriptions": {} - } - }, - "id": 87133, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9521:19:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 87058, - "id": 87134, - "nodeType": "Return", - "src": "9514:26:147" - } - ] - } - }, - "id": 87144, - "nodeType": "IfStatement", - "src": "9391:203:147", - "trueBody": { - "id": 87125, - "nodeType": "Block", - "src": "9425:41:147", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 87121, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91371, - "src": "9448:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$91371_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 87122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9453:5:147", - "memberName": "Tier1", - "nodeType": "MemberAccess", - "referencedDeclaration": 91368, - "src": "9448:10:147", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_enum$_Tier_$91371", - "typeString": "enum INSDomainPrice.Tier" - } - ], - "id": 87120, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9440:7:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 87119, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9440:7:147", - "typeDescriptions": {} - } - }, - "id": 87123, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9440:19:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 87058, - "id": 87124, - "nodeType": "Return", - "src": "9433:26:147" - } - ] - } - } - ] - }, - "baseFunctions": [ - 91552 - ], - "documentation": { - "id": 87052, - "nodeType": "StructuredDocumentation", - "src": "8803:41:147", - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "dfef64da", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getTier", - "nameLocation": "8856:7:147", - "parameters": { - "id": 87055, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 87054, - "mutability": "mutable", - "name": "label", - "nameLocation": "8878:5:147", - "nodeType": "VariableDeclaration", - "scope": 87146, - "src": "8864:19:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 87053, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "8864:6:147", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "8863:21:147" - }, - "returnParameters": { - "id": 87058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 87057, - "mutability": "mutable", - "name": "tier", - "nameLocation": "8914:4:147", - "nodeType": "VariableDeclaration", - "scope": 87146, - "src": "8906:12:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87056, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8906:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "8905:14:147" - }, - "scope": 87685, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 87320, - "nodeType": "FunctionDefinition", - "src": "9646:1367:147", - "nodes": [], - "body": { - "id": 87319, - "nodeType": "Block", - "src": "9793:1220:147", - "nodes": [], - "statements": [ - { - "assignments": [ - 87161 - ], - "declarations": [ - { - "constant": false, - "id": 87161, - "mutability": "mutable", - "name": "nameLen", - "nameLocation": "9807:7:147", - "nodeType": "VariableDeclaration", - "scope": 87319, - "src": "9799:15:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9799:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87165, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 87162, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87149, - "src": "9817:5:147", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 87163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9823:6:147", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 93214, - "src": "9817:12:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 87164, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9817:14:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9799:32:147" - }, - { - "assignments": [ - 87167 - ], - "declarations": [ - { - "constant": false, - "id": 87167, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "9845:6:147", - "nodeType": "VariableDeclaration", - "scope": 87319, - "src": "9837:14:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 87166, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9837:7:147", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 87171, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 87168, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87149, - "src": "9854:5:147", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 87169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "9860:9:147", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 93096, - "src": "9854:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 87170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9854:17:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9837:34:147" - }, - { - "assignments": [ - 87173 - ], - "declarations": [ - { - "constant": false, - "id": 87173, - "mutability": "mutable", - "name": "overriddenRenewalFee", - "nameLocation": "9885:20:147", - "nodeType": "VariableDeclaration", - "scope": 87319, - "src": "9877:28:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9877:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87177, - "initialValue": { - "baseExpression": { - "id": 87174, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86425, - "src": "9908:16:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 87176, - "indexExpression": { - "id": 87175, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87167, - "src": "9925:6:147", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9908:24:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9877:55:147" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87180, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87178, - "name": "overriddenRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87173, - "src": "9943:20:147", -======= - "id": 119024, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119014, - "src": "9361:9:163", ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { -<<<<<<< Updated upstream - "hexValue": "30", - "id": 87179, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9967:1:147", -======= - "id": 119025, - "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118271, - "src": "9373:30:163", ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "9943:25:147", -======= - "src": "9361:42:163", ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { -<<<<<<< Updated upstream - "id": 87299, - "nodeType": "Block", - "src": "10039:877:147", - "statements": [ - { - "assignments": [ - 87192 - ], - "declarations": [ - { - "constant": false, - "id": 87192, - "mutability": "mutable", - "name": "renewalFeeByLength", - "nameLocation": "10055:18:147", - "nodeType": "VariableDeclaration", - "scope": 87299, - "src": "10047:26:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10047:7:147", -<<<<<<< Updated upstream -======= -======= -======= - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 119033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 119031, - "name": "tierValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119014, - "src": "9447:9:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 119032, - "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118275, - "src": "9459:30:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9447:42:163", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { ->>>>>>> Stashed changes - "id": 119041, - "nodeType": "Block", - "src": "9529:32:163", - "statements": [ - { - "expression": { - "expression": { - "id": 119038, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "9544:4:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "visibility": "internal" - } - ], - "id": 87200, - "initialValue": { - "baseExpression": { - "id": 87193, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86414, - "src": "10076:6:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 87199, - "indexExpression": { - "arguments": [ - { - "id": 87196, - "name": "nameLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87161, - "src": "10092:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 87197, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "10101:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 87194, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "10083:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$73915_$", - "typeString": "type(library Math)" - } - }, - "id": 87195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10088:3:147", - "memberName": "min", - "nodeType": "MemberAccess", - "referencedDeclaration": 73092, - "src": "10083:8:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 87198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10083:32:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10076:40:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10047:69:147" - }, - { - "expression": { - "id": 87207, -<<<<<<< Updated upstream -======= -======= - "id": 119028, ->>>>>>> Stashed changes -======= - "id": 119039, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9549:5:163", - "memberName": "Tier3", - "nodeType": "MemberAccess", - "referencedDeclaration": 123311, - "src": "9544:10:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "functionReturnParameters": 118983, - "id": 119040, - "nodeType": "Return", - "src": "9537:17:163" - } - ] - }, - "id": 119042, - "nodeType": "IfStatement", - "src": "9443:118:163", - "trueBody": { - "id": 119037, - "nodeType": "Block", - "src": "9491:32:163", - "statements": [ - { - "expression": { - "expression": { - "id": 119034, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "9506:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 119035, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "9511:5:163", - "memberName": "Tier2", - "nodeType": "MemberAccess", - "referencedDeclaration": 123310, - "src": "9506:10:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "functionReturnParameters": 118983, - "id": 119036, - "nodeType": "Return", - "src": "9499:17:163" - } - ] - } - }, - "id": 119043, - "nodeType": "IfStatement", - "src": "9357:204:163", - "trueBody": { - "id": 119030, - "nodeType": "Block", - "src": "9405:32:163", - "statements": [ - { - "expression": { - "expression": { - "id": 119027, - "name": "Tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123312, - "src": "9420:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", - "typeString": "type(enum INSDomainPrice.Tier)" - } - }, - "id": 119028, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "leftHandSide": { - "expression": { - "id": 87201, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87155, - "src": "10124:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87203, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "10134:3:147", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 91378, - "src": "10124:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87204, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87151, - "src": "10140:8:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 87205, - "name": "renewalFeeByLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87192, - "src": "10151:18:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10140:29:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10124:45:147", -<<<<<<< Updated upstream -======= -======= -======= ->>>>>>> Stashed changes - "memberLocation": "9425:5:163", - "memberName": "Tier1", - "nodeType": "MemberAccess", - "referencedDeclaration": 123309, - "src": "9420:10:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87208, - "nodeType": "ExpressionStatement", - "src": "10124:45:147" - }, - { - "assignments": [ - 87210 - ], - "declarations": [ - { - "constant": false, - "id": 87210, - "mutability": "mutable", - "name": "id", - "nameLocation": "10185:2:147", - "nodeType": "VariableDeclaration", - "scope": 87299, - "src": "10177:10:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87209, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10177:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87217, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 87213, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93107, - "src": "10208:12:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$93107_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 87214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10221:6:147", - "memberName": "RON_ID", - "nodeType": "MemberAccess", - "referencedDeclaration": 93070, - "src": "10208:19:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 87215, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87149, - "src": "10229:5:147", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 87211, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93107, - "src": "10190:12:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$93107_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 87212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10203:4:147", - "memberName": "toId", - "nodeType": "MemberAccess", - "referencedDeclaration": 93086, - "src": "10190:17:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (uint256,string memory) pure returns (uint256)" - } - }, - "id": 87216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10190:45:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10177:58:147" - }, - { - "assignments": [ - 87220 - ], - "declarations": [ - { - "constant": false, - "id": 87220, - "mutability": "mutable", - "name": "auction", - "nameLocation": "10254:7:147", - "nodeType": "VariableDeclaration", - "scope": 87299, - "src": "10243:18:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - }, - "typeName": { - "id": 87219, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87218, - "name": "INSAuction", - "nameLocations": [ - "10243:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91351, - "src": "10243:10:147" - }, - "referencedDeclaration": 91351, - "src": "10243:10:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "visibility": "internal" - } - ], - "id": 87222, - "initialValue": { - "id": 87221, - "name": "_auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86393, - "src": "10264:8:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10243:29:147" - }, - { - "condition": { - "arguments": [ - { - "id": 87225, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87210, - "src": "10301:2:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 87223, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87220, - "src": "10284:7:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "id": 87224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10292:8:147", - "memberName": "reserved", - "nodeType": "MemberAccess", - "referencedDeclaration": 91238, - "src": "10284:16:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view external returns (bool)" - } - }, - "id": 87226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10284:20:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 87298, - "nodeType": "IfStatement", - "src": "10280:630:147", - "trueBody": { - "id": 87297, - "nodeType": "Block", - "src": "10306:604:147", - "statements": [ - { - "assignments": [ - 87229 - ], - "declarations": [ - { - "constant": false, - "id": 87229, - "mutability": "mutable", - "name": "rns", - "nameLocation": "10327:3:147", - "nodeType": "VariableDeclaration", - "scope": 87297, - "src": "10316:14:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$92040", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 87228, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87227, - "name": "INSUnified", - "nameLocations": [ - "10316:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 92040, - "src": "10316:10:147" - }, - "referencedDeclaration": 92040, - "src": "10316:10:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$92040", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - } - ], - "id": 87233, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 87230, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87220, - "src": "10333:7:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "id": 87231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10341:13:147", - "memberName": "getRNSUnified", - "nodeType": "MemberAccess", - "referencedDeclaration": 91350, - "src": "10333:21:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_INSUnified_$92040_$", - "typeString": "function () view external returns (contract INSUnified)" - } - }, - "id": 87232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10333:23:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$92040", - "typeString": "contract INSUnified" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10316:40:147" - }, - { - "assignments": [ - 87235 - ], - "declarations": [ - { - "constant": false, - "id": 87235, - "mutability": "mutable", - "name": "expiry", - "nameLocation": "10374:6:147", - "nodeType": "VariableDeclaration", - "scope": 87297, - "src": "10366:14:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87234, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10366:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87251, - "initialValue": { - "arguments": [ - { - "expression": { - "expression": { - "arguments": [ - { - "id": 87240, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87210, - "src": "10428:2:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 87238, - "name": "rns", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87229, - "src": "10414:3:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$92040", - "typeString": "contract INSUnified" - } - }, - "id": 87239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10418:9:147", - "memberName": "getRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 91969, - "src": "10414:13:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Record_$91853_memory_ptr_$", - "typeString": "function (uint256) view external returns (struct INSUnified.Record memory)" - } - }, - "id": 87241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10414:17:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Record_$91853_memory_ptr", - "typeString": "struct INSUnified.Record memory" - } - }, - "id": 87242, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10432:3:147", - "memberName": "mut", - "nodeType": "MemberAccess", - "referencedDeclaration": 91852, - "src": "10414:21:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_MutableRecord_$91846_memory_ptr", - "typeString": "struct INSUnified.MutableRecord memory" - } - }, - "id": 87243, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10436:6:147", - "memberName": "expiry", - "nodeType": "MemberAccess", - "referencedDeclaration": 91843, - "src": "10414:28:147", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 87244, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87151, - "src": "10444:8:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "arguments": [ - { - "id": 87247, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10459:6:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 87246, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "10459:6:147", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 87245, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "10454:4:147", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 87248, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10454:12:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 87249, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10467:3:147", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "10454:16:147", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 87236, - "name": "LibSafeRange", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 93651, - "src": "10383:12:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibSafeRange_$93651_$", - "typeString": "type(library LibSafeRange)" - } - }, - "id": 87237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10396:17:147", - "memberName": "addWithUpperbound", - "nodeType": "MemberAccess", - "referencedDeclaration": 93650, - "src": "10383:30:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 87250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10383:88:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10366:105:147" - }, - { - "assignments": [ - 87256, - null - ], - "declarations": [ - { - "constant": false, - "id": 87256, - "mutability": "mutable", - "name": "domainAuction", - "nameLocation": "10514:13:147", - "nodeType": "VariableDeclaration", - "scope": 87297, - "src": "10482:45:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$91146_memory_ptr", - "typeString": "struct INSAuction.DomainAuction" - }, - "typeName": { - "id": 87255, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87254, - "name": "INSAuction.DomainAuction", - "nameLocations": [ - "10482:10:147", - "10493:13:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91146, - "src": "10482:24:147" - }, - "referencedDeclaration": 91146, - "src": "10482:24:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$91146_storage_ptr", - "typeString": "struct INSAuction.DomainAuction" - } - }, - "visibility": "internal" - }, - null - ], - "id": 87261, - "initialValue": { - "arguments": [ - { - "id": 87259, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87210, - "src": "10551:2:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 87257, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87220, - "src": "10532:7:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "id": 87258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10540:10:147", - "memberName": "getAuction", - "nodeType": "MemberAccess", - "referencedDeclaration": 91309, - "src": "10532:18:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_DomainAuction_$91146_memory_ptr_$_t_uint256_$", - "typeString": "function (uint256) view external returns (struct INSAuction.DomainAuction memory,uint256)" - } - }, - "id": 87260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10532:22:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_DomainAuction_$91146_memory_ptr_$_t_uint256_$", - "typeString": "tuple(struct INSAuction.DomainAuction memory,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10481:73:147" - }, - { - "assignments": [ - 87263 - ], - "declarations": [ - { - "constant": false, - "id": 87263, - "mutability": "mutable", - "name": "claimedAt", - "nameLocation": "10572:9:147", - "nodeType": "VariableDeclaration", - "scope": 87297, - "src": "10564:17:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 87262, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10564:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 87267, - "initialValue": { - "expression": { - "expression": { - "id": 87264, - "name": "domainAuction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87256, - "src": "10584:13:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DomainAuction_$91146_memory_ptr", - "typeString": "struct INSAuction.DomainAuction memory" - } - }, - "id": 87265, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10598:3:147", - "memberName": "bid", - "nodeType": "MemberAccess", - "referencedDeclaration": 91145, - "src": "10584:17:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Bid_$91138_memory_ptr", - "typeString": "struct INSAuction.Bid memory" - } - }, - "id": 87266, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10602:9:147", - "memberName": "claimedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 91137, - "src": "10584:27:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10564:47:147" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 87278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87270, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87268, - "name": "claimedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87263, - "src": "10625:9:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 87269, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10638:1:147", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10625:14:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87271, - "name": "expiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87235, - "src": "10643:6:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 87272, - "name": "claimedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87263, - "src": "10652:9:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10643:18:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 87274, - "name": "auction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87220, - "src": "10664:7:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSAuction_$91351", - "typeString": "contract INSAuction" - } - }, - "id": 87275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10672:25:147", - "memberName": "MAX_AUCTION_DOMAIN_EXPIRY", - "nodeType": "MemberAccess", - "referencedDeclaration": 91202, - "src": "10664:33:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_pure$__$returns$_t_uint64_$", - "typeString": "function () pure external returns (uint64)" - } - }, - "id": 87276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10664:35:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "10643:56:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "10625:74:147", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 87283, - "nodeType": "IfStatement", - "src": "10621:137:147", - "trueBody": { - "id": 87282, - "nodeType": "Block", - "src": "10701:57:147", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 87279, - "name": "ExceedAuctionDomainExpiry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91365, - "src": "10720:25:147", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 87280, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10720:27:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 87281, - "nodeType": "RevertStatement", - "src": "10713:34:147" - } - ] - } - }, - { - "expression": { - "id": 87295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 87284, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87158, - "src": "10828:3:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87286, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "10832:3:147", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 91378, - "src": "10828:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 87289, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86396, - "src": "10850:9:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "id": 87291, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87167, - "src": "10877:6:147", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 87290, - "name": "_getDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87684, - "src": "10861:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 87292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10861:23:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 87293, - "name": "MAX_PERCENTAGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86368, - "src": "10886:14:147", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 87287, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "10838:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$73915_$", - "typeString": "type(library Math)" - } - }, - "id": 87288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10843:6:147", - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 73263, - "src": "10838:11:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 87294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10838:63:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10828:73:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 87296, - "nodeType": "ExpressionStatement", - "src": "10828:73:147" - } - ] - } - } - ] - }, - "id": 87300, - "nodeType": "IfStatement", - "src": "9939:977:147", - "trueBody": { - "id": 87190, - "nodeType": "Block", - "src": "9970:63:147", - "statements": [ - { - "expression": { - "id": 87188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 87181, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87155, - "src": "9978:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87183, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "9988:3:147", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 91378, - "src": "9978:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 87187, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 87184, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87151, - "src": "9994:8:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 87186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "10005:21:147", - "subExpression": { - "id": 87185, - "name": "overriddenRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87173, - "src": "10006:20:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9994:32:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9978:48:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 87189, - "nodeType": "ExpressionStatement", - "src": "9978:48:147" - } - ] - } - }, - { - "expression": { - "id": 87308, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 87301, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87158, - "src": "10922:3:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87303, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "10926:3:147", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 91380, - "src": "10922:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 87305, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87158, - "src": "10948:3:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87306, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10952:3:147", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 91378, - "src": "10948:7:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 87304, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87350, - "src": "10932:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 87307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10932:24:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10922:34:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 87309, - "nodeType": "ExpressionStatement", - "src": "10922:34:147" - }, - { - "expression": { - "id": 87317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 87310, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87155, - "src": "10962:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87312, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "10972:3:147", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 91380, - "src": "10962:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 87314, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87155, - "src": "10994:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 87315, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11004:3:147", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 91378, - "src": "10994:13:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 87313, - "name": "convertUSDToRON", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87350, - "src": "10978:15:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 87316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10978:30:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10962:46:147", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 87318, - "nodeType": "ExpressionStatement", - "src": "10962:46:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 118983, - "id": 119029, - "nodeType": "Return", - "src": "9413:17:163" - } - ] - } ->>>>>>> Stashed changes -======= - "functionReturnParameters": 118983, - "id": 119029, - "nodeType": "Return", - "src": "9413:17:163" - } - ] - } ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91544 - ], - "documentation": { - "id": 87147, - "nodeType": "StructuredDocumentation", - "src": "9602:41:147", -<<<<<<< Updated upstream -======= -======= - 123495 - ], - "documentation": { - "id": 118976, - "nodeType": "StructuredDocumentation", - "src": "8890:41:163", ->>>>>>> Stashed changes -======= - 123495 - ], - "documentation": { - "id": 118976, - "nodeType": "StructuredDocumentation", - "src": "8890:41:163", ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "dfef64da", - "implemented": true, - "kind": "function", - "modifiers": [], -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "name": "getRenewalFee", - "nameLocation": "9655:13:147", - "parameters": { - "id": 87152, -======= - "name": "getTier", - "nameLocation": "8943:7:163", - "parameters": { - "id": 118979, ->>>>>>> Stashed changes -======= - "name": "getTier", - "nameLocation": "8943:7:163", - "parameters": { - "id": 118979, ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87149, - "mutability": "mutable", - "name": "label", - "nameLocation": "9683:5:147", - "nodeType": "VariableDeclaration", - "scope": 87320, - "src": "9669:19:147", -======= - "id": 118978, - "mutability": "mutable", - "name": "label", - "nameLocation": "8965:5:163", - "nodeType": "VariableDeclaration", - "scope": 119045, - "src": "8951:19:163", ->>>>>>> Stashed changes -======= - "id": 118978, - "mutability": "mutable", - "name": "label", - "nameLocation": "8965:5:163", - "nodeType": "VariableDeclaration", - "scope": 119045, - "src": "8951:19:163", ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87148, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "9669:6:147", -======= - "id": 118977, - "name": "string", - "nodeType": "ElementaryTypeName", -======= - "id": 118977, - "name": "string", - "nodeType": "ElementaryTypeName", ->>>>>>> Stashed changes - "src": "8951:6:163", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "8950:21:163" - }, - "returnParameters": { - "id": 118983, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 118982, - "mutability": "mutable", - "name": "tier", - "nameLocation": "8998:4:163", - "nodeType": "VariableDeclaration", - "scope": 119045, - "src": "8993:9:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - }, - "typeName": { - "id": 118981, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 118980, - "name": "Tier", - "nameLocations": [ - "8993:4:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123312, - "src": "8993:4:163" - }, - "referencedDeclaration": 123312, - "src": "8993:4:163", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Tier_$123312", - "typeString": "enum INSDomainPrice.Tier" - } - }, - "visibility": "internal" - } - ], - "src": "8992:11:163" - }, - "scope": 119626, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 119082, - "nodeType": "FunctionDefinition", - "src": "9613:396:163", - "nodes": [], - "body": { - "id": 119081, - "nodeType": "Block", - "src": "9760:249:163", - "nodes": [], - "statements": [ - { - "assignments": [ - 119060 - ], - "declarations": [ - { - "constant": false, - "id": 119060, - "mutability": "mutable", - "name": "revertReason", - "nameLocation": "9773:12:163", - "nodeType": "VariableDeclaration", - "scope": 119081, - "src": "9766:19:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 119059, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "9766:6:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "visibility": "internal" - } - ], - "id": 119061, - "nodeType": "VariableDeclarationStatement", - "src": "9766:19:163" - }, - { - "expression": { - "id": 119070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 119062, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119054, - "src": "9792:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - { - "id": 119063, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119057, - "src": "9803:3:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - { - "id": 119064, - "name": "revertReason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119060, - "src": "9808:12:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - } - ], - "id": 119065, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "9791:30:163", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", - "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 119067, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119048, - "src": "9842:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 119068, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119050, - "src": "9849:8:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 119066, - "name": "_tryGetRenewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119583, - "src": "9824:17:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", - "typeString": "function (string memory,uint256) view returns (struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" - } - }, - "id": 119069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9824:34:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_struct$_UnitPrice_$123322_memory_ptr_$_t_bytes4_$", - "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory,bytes4)" - } - }, - "src": "9791:67:163", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 119071, - "nodeType": "ExpressionStatement", - "src": "9791:67:163" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 119077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 119072, - "name": "revertReason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119060, - "src": "9868:12:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "307830", - "id": 119075, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9891:3:163", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0x0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 119074, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9884:6:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes4_$", - "typeString": "type(bytes4)" - }, - "typeName": { - "id": 119073, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "9884:6:163", - "typeDescriptions": {} - } - }, - "id": 119076, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9884:11:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "9868:27:163", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 119080, - "nodeType": "IfStatement", - "src": "9864:141:163", - "trueBody": { - "id": 119079, - "nodeType": "Block", - "src": "9897:108:163", - "statements": [ - { - "AST": { - "nativeSrc": "9930:69:163", - "nodeType": "YulBlock", - "src": "9930:69:163", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nativeSrc": "9947:3:163", - "nodeType": "YulLiteral", - "src": "9947:3:163", - "type": "", - "value": "0x0" - }, - { - "name": "revertReason", - "nativeSrc": "9952:12:163", - "nodeType": "YulIdentifier", - "src": "9952:12:163" - } - ], - "functionName": { - "name": "mstore", - "nativeSrc": "9940:6:163", - "nodeType": "YulIdentifier", - "src": "9940:6:163" - }, - "nativeSrc": "9940:25:163", - "nodeType": "YulFunctionCall", - "src": "9940:25:163" - }, - "nativeSrc": "9940:25:163", - "nodeType": "YulExpressionStatement", - "src": "9940:25:163" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nativeSrc": "9981:3:163", - "nodeType": "YulLiteral", - "src": "9981:3:163", - "type": "", - "value": "0x0" - }, - { - "kind": "number", - "nativeSrc": "9986:4:163", - "nodeType": "YulLiteral", - "src": "9986:4:163", - "type": "", - "value": "0x04" - } - ], - "functionName": { - "name": "revert", - "nativeSrc": "9974:6:163", - "nodeType": "YulIdentifier", - "src": "9974:6:163" - }, - "nativeSrc": "9974:17:163", - "nodeType": "YulFunctionCall", - "src": "9974:17:163" - }, - "nativeSrc": "9974:17:163", - "nodeType": "YulExpressionStatement", - "src": "9974:17:163" - } - ] - }, - "evmVersion": "istanbul", - "externalReferences": [ - { - "declaration": 119060, - "isOffset": false, - "isSlot": false, - "src": "9952:12:163", - "valueSize": 1 - } - ], - "flags": [ - "memory-safe" - ], - "id": 119078, - "nodeType": "InlineAssembly", - "src": "9905:94:163" - } - ] - } - } - ] - }, - "baseFunctions": [ - 123486 - ], - "documentation": { - "id": 119046, - "nodeType": "StructuredDocumentation", - "src": "9569:41:163", ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "f4651f49", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getRenewalFee", - "nameLocation": "9655:13:147", - "parameters": { - "id": 87152, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 87149, - "mutability": "mutable", - "name": "label", - "nameLocation": "9683:5:147", - "nodeType": "VariableDeclaration", - "scope": 87320, - "src": "9669:19:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 87148, - "name": "string", - "nodeType": "ElementaryTypeName", -<<<<<<< Updated upstream - "src": "9669:6:147", -======= - "src": "9636:6:163", -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87151, - "mutability": "mutable", - "name": "duration", - "nameLocation": "9698:8:147", - "nodeType": "VariableDeclaration", - "scope": 87320, - "src": "9690:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119050, - "mutability": "mutable", - "name": "duration", - "nameLocation": "9665:8:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9657:16:163", ->>>>>>> Stashed changes -======= - "id": 119050, - "mutability": "mutable", - "name": "duration", - "nameLocation": "9665:8:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9657:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87150, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9690:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119049, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9657:7:163", ->>>>>>> Stashed changes -======= - "id": 119049, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9657:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "9668:39:147" - }, - "returnParameters": { - "id": 87159, -<<<<<<< Updated upstream -======= -======= - "src": "9635:39:163" - }, - "returnParameters": { - "id": 119058, ->>>>>>> Stashed changes -======= - "src": "9635:39:163" - }, - "returnParameters": { - "id": 119058, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87155, - "mutability": "mutable", - "name": "basePrice", - "nameLocation": "9758:9:147", - "nodeType": "VariableDeclaration", - "scope": 87320, - "src": "9741:26:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 87154, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87153, - "name": "UnitPrice", - "nameLocations": [ - "9741:9:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91381, - "src": "9741:9:147" - }, - "referencedDeclaration": 91381, - "src": "9741:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119054, - "mutability": "mutable", - "name": "basePrice", - "nameLocation": "9725:9:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9708:26:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 119053, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119052, - "name": "UnitPrice", - "nameLocations": [ - "9708:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123322, - "src": "9708:9:163" - }, - "referencedDeclaration": 123322, - "src": "9708:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119054, - "mutability": "mutable", - "name": "basePrice", - "nameLocation": "9725:9:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9708:26:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 119053, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119052, - "name": "UnitPrice", - "nameLocations": [ - "9708:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123322, - "src": "9708:9:163" - }, - "referencedDeclaration": 123322, - "src": "9708:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87158, - "mutability": "mutable", - "name": "tax", - "nameLocation": "9786:3:147", - "nodeType": "VariableDeclaration", - "scope": 87320, - "src": "9769:20:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 87157, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87156, - "name": "UnitPrice", - "nameLocations": [ - "9769:9:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91381, - "src": "9769:9:147" - }, - "referencedDeclaration": 91381, - "src": "9769:9:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$91381_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119057, - "mutability": "mutable", - "name": "tax", - "nameLocation": "9753:3:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9736:20:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 119056, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119055, - "name": "UnitPrice", - "nameLocations": [ - "9736:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123322, - "src": "9736:9:163" - }, - "referencedDeclaration": 123322, - "src": "9736:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119057, - "mutability": "mutable", - "name": "tax", - "nameLocation": "9753:3:163", - "nodeType": "VariableDeclaration", - "scope": 119082, - "src": "9736:20:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 119056, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119055, - "name": "UnitPrice", - "nameLocations": [ - "9736:9:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123322, - "src": "9736:9:163" - }, - "referencedDeclaration": 123322, - "src": "9736:9:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "9740:50:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "9740:50:147" - }, - "scope": 87685, -======= - "src": "9707:50:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "9707:50:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87350, - "nodeType": "FunctionDefinition", - "src": "11061:286:147", - "nodes": [], - "body": { - "id": 87349, - "nodeType": "Block", - "src": "11139:208:147", -<<<<<<< Updated upstream -======= -======= - "id": 119112, - "nodeType": "FunctionDefinition", - "src": "10057:286:163", - "nodes": [], - "body": { - "id": 119111, - "nodeType": "Block", - "src": "10135:208:163", ->>>>>>> Stashed changes -======= - "id": 119112, - "nodeType": "FunctionDefinition", - "src": "10057:286:163", - "nodes": [], - "body": { - "id": 119111, - "nodeType": "Block", - "src": "10135:208:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87338, - "name": "usdWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87323, - "src": "11258:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119100, - "name": "usdWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119085, - "src": "10254:6:163", ->>>>>>> Stashed changes -======= - "id": 119100, - "name": "usdWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119085, - "src": "10254:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87343, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86364, - "src": "11298:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 119105, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118279, - "src": "10294:12:163", ->>>>>>> Stashed changes -======= - "id": 119105, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118279, - "src": "10294:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], -<<<<<<< Updated upstream - "id": 87342, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87342, -======= - "id": 119104, ->>>>>>> Stashed changes -======= - "id": 119104, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", -<<<<<<< Updated upstream - "src": "11291:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11291:6:147", -======= - "src": "10287:6:163", ->>>>>>> Stashed changes -======= - "src": "10287:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87341, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "11291:6:147", - "typeDescriptions": {} - } - }, - "id": 87344, -<<<<<<< Updated upstream -======= -======= - "id": 119103, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10287:6:163", - "typeDescriptions": {} - } - }, - "id": 119106, ->>>>>>> Stashed changes -======= - "id": 119103, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10287:6:163", - "typeDescriptions": {} - } - }, - "id": 119106, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11291:20:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11291:20:147", -======= - "src": "10287:20:163", ->>>>>>> Stashed changes -======= - "src": "10287:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], -<<<<<<< Updated upstream - "id": 87340, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87340, -======= - "id": 119102, ->>>>>>> Stashed changes -======= - "id": 119102, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", -<<<<<<< Updated upstream - "src": "11285:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11285:5:147", -======= - "src": "10281:5:163", ->>>>>>> Stashed changes -======= - "src": "10281:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int32_$", - "typeString": "type(int32)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87339, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "11285:5:147", - "typeDescriptions": {} - } - }, - "id": 87345, -<<<<<<< Updated upstream -======= -======= - "id": 119101, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "10281:5:163", - "typeDescriptions": {} - } - }, - "id": 119107, ->>>>>>> Stashed changes -======= - "id": 119101, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "10281:5:163", - "typeDescriptions": {} - } - }, - "id": 119107, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11285:27:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11285:27:147", -======= - "src": "10281:27:163", ->>>>>>> Stashed changes -======= - "src": "10281:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int32", - "typeString": "int32" - } - }, - { - "hexValue": "3138", -<<<<<<< Updated upstream - "id": 87346, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87346, -======= - "id": 119108, ->>>>>>> Stashed changes -======= - "id": 119108, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "11333:2:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11333:2:147", -======= - "src": "10329:2:163", ->>>>>>> Stashed changes -======= - "src": "10329:2:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_int32", - "typeString": "int32" - }, - { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - } - ], - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream - "id": 87335, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87335, -======= - "id": 119097, ->>>>>>> Stashed changes -======= - "id": 119097, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11231:3:147", - "subExpression": { - "hexValue": "3138", - "id": 87334, -<<<<<<< Updated upstream -======= -======= - "src": "10227:3:163", - "subExpression": { - "hexValue": "3138", - "id": 119096, ->>>>>>> Stashed changes -======= - "src": "10227:3:163", - "subExpression": { - "hexValue": "3138", - "id": 119096, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "11232:2:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11232:2:147", -======= - "src": "10228:2:163", ->>>>>>> Stashed changes -======= - "src": "10228:2:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_18_by_1", - "typeString": "int_const -18" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_minus_18_by_1", - "typeString": "int_const -18" - } - ], - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87330, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86405, - "src": "11178:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119092, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "10174:16:163", ->>>>>>> Stashed changes -======= - "id": 119092, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "10174:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87331, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86402, - "src": "11196:17:147", -<<<<<<< Updated upstream -======= -======= - "id": 119093, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "10192:17:163", ->>>>>>> Stashed changes -======= - "id": 119093, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "10192:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87328, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86389, - "src": "11152:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - } - }, - "id": 87329, -<<<<<<< Updated upstream -======= -======= - "id": 119090, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "10148:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119091, ->>>>>>> Stashed changes -======= - "id": 119090, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "10148:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119091, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "11158:19:147", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 75134, - "src": "11152:25:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$75235_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 87332, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "10154:19:163", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 106052, - "src": "10148:25:163", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 119094, ->>>>>>> Stashed changes -======= - "memberLocation": "10154:19:163", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 106052, - "src": "10148:25:163", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 119094, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11152:62:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$75235_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 87333, -<<<<<<< Updated upstream -======= -======= - "src": "10148:62:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119095, ->>>>>>> Stashed changes -======= - "src": "10148:62:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119095, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "11215:7:147", - "memberName": "inverse", - "nodeType": "MemberAccess", - "referencedDeclaration": 94441, - "src": "11152:70:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$75235_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$75235_memory_ptr_$attached_to$_t_struct$_Price_$75235_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" - } - }, - "id": 87336, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "10211:7:163", - "memberName": "inverse", - "nodeType": "MemberAccess", - "referencedDeclaration": 126386, - "src": "10148:70:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$106153_memory_ptr_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" - } - }, - "id": 119098, ->>>>>>> Stashed changes -======= - "memberLocation": "10211:7:163", - "memberName": "inverse", - "nodeType": "MemberAccess", - "referencedDeclaration": 126386, - "src": "10148:70:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$106153_memory_ptr_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" - } - }, - "id": 119098, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ -<<<<<<< Updated upstream - "11225:4:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "11225:4:147" -======= - "10221:4:163" ->>>>>>> Stashed changes -======= - "10221:4:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "names": [ - "expo" - ], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11152:85:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$75235_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 87337, -<<<<<<< Updated upstream -======= -======= - "src": "10148:85:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119099, ->>>>>>> Stashed changes -======= - "src": "10148:85:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119099, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "11238:3:147", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 94333, - "src": "11152:89:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$75235_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$75235_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 87347, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "10234:3:163", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 126278, - "src": "10148:89:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 119109, ->>>>>>> Stashed changes -======= - "memberLocation": "10234:3:163", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 126278, - "src": "10148:89:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 119109, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ -<<<<<<< Updated upstream - "11250:6:147", - "11272:11:147", - "11320:11:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "11250:6:147", - "11272:11:147", - "11320:11:147" -======= - "10246:6:163", - "10268:11:163", - "10316:11:163" ->>>>>>> Stashed changes -======= - "10246:6:163", - "10268:11:163", - "10316:11:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "names": [ - "inpWei", - "inpDecimals", - "outDecimals" - ], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11152:190:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11152:190:147", -======= - "src": "10148:190:163", ->>>>>>> Stashed changes -======= - "src": "10148:190:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 87327, - "id": 87348, - "nodeType": "Return", - "src": "11145:197:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 119089, - "id": 119110, - "nodeType": "Return", - "src": "10141:197:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 119089, - "id": 119110, - "nodeType": "Return", - "src": "10141:197:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91631 - ], - "documentation": { - "id": 87321, - "nodeType": "StructuredDocumentation", - "src": "11017:41:147", -<<<<<<< Updated upstream -======= -======= - 123576 - ], - "documentation": { - "id": 119083, - "nodeType": "StructuredDocumentation", - "src": "10013:41:163", ->>>>>>> Stashed changes -======= - 123576 - ], - "documentation": { - "id": 119083, - "nodeType": "StructuredDocumentation", - "src": "10013:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "7174026e", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "convertUSDToRON", -<<<<<<< Updated upstream - "nameLocation": "11070:15:147", - "parameters": { - "id": 87324, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "11070:15:147", - "parameters": { - "id": 87324, -======= - "nameLocation": "10066:15:163", - "parameters": { - "id": 119086, ->>>>>>> Stashed changes -======= - "nameLocation": "10066:15:163", - "parameters": { - "id": 119086, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87323, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "11094:6:147", - "nodeType": "VariableDeclaration", - "scope": 87350, - "src": "11086:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119085, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "10090:6:163", - "nodeType": "VariableDeclaration", - "scope": 119112, - "src": "10082:14:163", ->>>>>>> Stashed changes -======= - "id": 119085, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "10090:6:163", - "nodeType": "VariableDeclaration", - "scope": 119112, - "src": "10082:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87322, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11086:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119084, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10082:7:163", ->>>>>>> Stashed changes -======= - "id": 119084, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10082:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11085:16:147" - }, - "returnParameters": { - "id": 87327, -<<<<<<< Updated upstream -======= -======= - "src": "10081:16:163" - }, - "returnParameters": { - "id": 119089, ->>>>>>> Stashed changes -======= - "src": "10081:16:163" - }, - "returnParameters": { - "id": 119089, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87326, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "11131:6:147", - "nodeType": "VariableDeclaration", - "scope": 87350, - "src": "11123:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119088, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "10127:6:163", - "nodeType": "VariableDeclaration", - "scope": 119112, - "src": "10119:14:163", ->>>>>>> Stashed changes -======= - "id": 119088, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "10127:6:163", - "nodeType": "VariableDeclaration", - "scope": 119112, - "src": "10119:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87325, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11123:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119087, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10119:7:163", ->>>>>>> Stashed changes -======= - "id": 119087, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10119:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "11122:16:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11122:16:147" - }, - "scope": 87685, -======= - "src": "10118:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "10118:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87376, - "nodeType": "FunctionDefinition", - "src": "11395:263:147", - "nodes": [], - "body": { - "id": 87375, - "nodeType": "Block", - "src": "11473:185:147", -<<<<<<< Updated upstream -======= -======= - "id": 119138, - "nodeType": "FunctionDefinition", - "src": "10391:263:163", - "nodes": [], - "body": { - "id": 119137, - "nodeType": "Block", - "src": "10469:185:163", ->>>>>>> Stashed changes -======= - "id": 119138, - "nodeType": "FunctionDefinition", - "src": "10391:263:163", - "nodes": [], - "body": { - "id": 119137, - "nodeType": "Block", - "src": "10469:185:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87364, - "name": "ronWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87353, - "src": "11569:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119126, - "name": "ronWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119115, - "src": "10565:6:163", ->>>>>>> Stashed changes -======= - "id": 119126, - "name": "ronWei", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119115, - "src": "10565:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "3138", -<<<<<<< Updated upstream - "id": 87365, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87365, -======= - "id": 119127, ->>>>>>> Stashed changes -======= - "id": 119127, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "11596:2:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11596:2:147", -======= - "src": "10592:2:163", ->>>>>>> Stashed changes -======= - "src": "10592:2:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - { - "arguments": [ - { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87370, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86364, - "src": "11632:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 119132, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118279, - "src": "10628:12:163", ->>>>>>> Stashed changes -======= - "id": 119132, - "name": "USD_DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118279, - "src": "10628:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], -<<<<<<< Updated upstream - "id": 87369, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87369, -======= - "id": 119131, ->>>>>>> Stashed changes -======= - "id": 119131, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", -<<<<<<< Updated upstream - "src": "11625:6:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11625:6:147", -======= - "src": "10621:6:163", ->>>>>>> Stashed changes -======= - "src": "10621:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87368, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "11625:6:147", - "typeDescriptions": {} - } - }, - "id": 87371, -<<<<<<< Updated upstream -======= -======= - "id": 119130, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10621:6:163", - "typeDescriptions": {} - } - }, - "id": 119133, ->>>>>>> Stashed changes -======= - "id": 119130, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10621:6:163", - "typeDescriptions": {} - } - }, - "id": 119133, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11625:20:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11625:20:147", -======= - "src": "10621:20:163", ->>>>>>> Stashed changes -======= - "src": "10621:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], -<<<<<<< Updated upstream - "id": 87367, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87367, -======= - "id": 119129, ->>>>>>> Stashed changes -======= - "id": 119129, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", -<<<<<<< Updated upstream - "src": "11619:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11619:5:147", -======= - "src": "10615:5:163", ->>>>>>> Stashed changes -======= - "src": "10615:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int32_$", - "typeString": "type(int32)" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87366, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "11619:5:147", - "typeDescriptions": {} - } - }, - "id": 87372, -<<<<<<< Updated upstream -======= -======= - "id": 119128, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "10615:5:163", - "typeDescriptions": {} - } - }, - "id": 119134, ->>>>>>> Stashed changes -======= - "id": 119128, - "name": "int32", - "nodeType": "ElementaryTypeName", - "src": "10615:5:163", - "typeDescriptions": {} - } - }, - "id": 119134, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11619:27:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11619:27:147", -======= - "src": "10615:27:163", ->>>>>>> Stashed changes -======= - "src": "10615:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int32", - "typeString": "int32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - { - "typeIdentifier": "t_int32", - "typeString": "int32" - } - ], - "expression": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87360, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86405, - "src": "11512:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119122, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "10508:16:163", ->>>>>>> Stashed changes -======= - "id": 119122, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "10508:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87361, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86402, - "src": "11530:17:147", -<<<<<<< Updated upstream -======= -======= - "id": 119123, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "10526:17:163", ->>>>>>> Stashed changes -======= - "id": 119123, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "10526:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87358, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86389, - "src": "11486:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - } - }, - "id": 87359, -<<<<<<< Updated upstream -======= -======= - "id": 119120, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "10482:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119121, ->>>>>>> Stashed changes -======= - "id": 119120, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "10482:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119121, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "11492:19:147", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 75134, - "src": "11486:25:147", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$75235_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 87362, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "10488:19:163", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 106052, - "src": "10482:25:163", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 119124, ->>>>>>> Stashed changes -======= - "memberLocation": "10488:19:163", - "memberName": "getPriceNoOlderThan", - "nodeType": "MemberAccess", - "referencedDeclaration": 106052, - "src": "10482:25:163", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" - } - }, - "id": 119124, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11486:62:147", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$75235_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 87363, -<<<<<<< Updated upstream -======= -======= - "src": "10482:62:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119125, ->>>>>>> Stashed changes -======= - "src": "10482:62:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", - "typeString": "struct PythStructs.Price memory" - } - }, - "id": 119125, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "11549:3:147", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 94333, - "src": "11486:66:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$75235_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$75235_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 87373, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "10545:3:163", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 126278, - "src": "10482:66:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 119135, ->>>>>>> Stashed changes -======= - "memberLocation": "10545:3:163", - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 126278, - "src": "10482:66:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", - "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" - } - }, - "id": 119135, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ -<<<<<<< Updated upstream - "11561:6:147", - "11583:11:147", - "11606:11:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "11561:6:147", - "11583:11:147", - "11606:11:147" -======= - "10557:6:163", - "10579:11:163", - "10602:11:163" ->>>>>>> Stashed changes -======= - "10557:6:163", - "10579:11:163", - "10602:11:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "names": [ - "inpWei", - "inpDecimals", - "outDecimals" - ], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "11486:167:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11486:167:147", -======= - "src": "10482:167:163", ->>>>>>> Stashed changes -======= - "src": "10482:167:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 87357, - "id": 87374, - "nodeType": "Return", - "src": "11479:174:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 119119, - "id": 119136, - "nodeType": "Return", - "src": "10475:174:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 119119, - "id": 119136, - "nodeType": "Return", - "src": "10475:174:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "baseFunctions": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 91639 - ], - "documentation": { - "id": 87351, - "nodeType": "StructuredDocumentation", - "src": "11351:41:147", -<<<<<<< Updated upstream -======= -======= - 123584 - ], - "documentation": { - "id": 119113, - "nodeType": "StructuredDocumentation", - "src": "10347:41:163", ->>>>>>> Stashed changes -======= - 123584 - ], - "documentation": { - "id": 119113, - "nodeType": "StructuredDocumentation", - "src": "10347:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @inheritdoc INSDomainPrice" - }, - "functionSelector": "037f1769", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "convertRONToUSD", -<<<<<<< Updated upstream - "nameLocation": "11404:15:147", - "parameters": { - "id": 87354, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "11404:15:147", - "parameters": { - "id": 87354, -======= - "nameLocation": "10400:15:163", - "parameters": { - "id": 119116, ->>>>>>> Stashed changes -======= - "nameLocation": "10400:15:163", - "parameters": { - "id": 119116, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87353, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "11428:6:147", - "nodeType": "VariableDeclaration", - "scope": 87376, - "src": "11420:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119115, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "10424:6:163", - "nodeType": "VariableDeclaration", - "scope": 119138, - "src": "10416:14:163", ->>>>>>> Stashed changes -======= - "id": 119115, - "mutability": "mutable", - "name": "ronWei", - "nameLocation": "10424:6:163", - "nodeType": "VariableDeclaration", - "scope": 119138, - "src": "10416:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87352, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11420:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119114, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10416:7:163", ->>>>>>> Stashed changes -======= - "id": 119114, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10416:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11419:16:147" - }, - "returnParameters": { - "id": 87357, -<<<<<<< Updated upstream -======= -======= - "src": "10415:16:163" - }, - "returnParameters": { - "id": 119119, ->>>>>>> Stashed changes -======= - "src": "10415:16:163" - }, - "returnParameters": { - "id": 119119, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87356, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "11465:6:147", - "nodeType": "VariableDeclaration", - "scope": 87376, - "src": "11457:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119118, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "10461:6:163", - "nodeType": "VariableDeclaration", - "scope": 119138, - "src": "10453:14:163", ->>>>>>> Stashed changes -======= - "id": 119118, - "mutability": "mutable", - "name": "usdWei", - "nameLocation": "10461:6:163", - "nodeType": "VariableDeclaration", - "scope": 119138, - "src": "10453:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87355, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11457:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119117, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10453:7:163", ->>>>>>> Stashed changes -======= - "id": 119117, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10453:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "11456:16:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11456:16:147" - }, - "scope": 87685, -======= - "src": "10452:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "10452:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87423, - "nodeType": "FunctionDefinition", - "src": "11756:419:147", - "nodes": [], - "body": { - "id": 87422, - "nodeType": "Block", - "src": "11985:190:147", -<<<<<<< Updated upstream -======= -======= - "id": 119185, - "nodeType": "FunctionDefinition", - "src": "10752:419:163", - "nodes": [], - "body": { - "id": 119184, - "nodeType": "Block", - "src": "10981:190:163", ->>>>>>> Stashed changes -======= - "id": 119185, - "nodeType": "FunctionDefinition", - "src": "10752:419:163", - "nodes": [], - "body": { - "id": 119184, - "nodeType": "Block", - "src": "10981:190:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 87397, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87397, -======= - "id": 119159, ->>>>>>> Stashed changes -======= - "id": 119159, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87394, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87392, - "src": "11991:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119156, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "10987:6:163", ->>>>>>> Stashed changes -======= - "id": 119156, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "10987:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87395, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87380, - "src": "12000:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119157, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119142, - "src": "10996:8:163", ->>>>>>> Stashed changes -======= - "id": 119157, - "name": "lbHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119142, - "src": "10996:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 87396, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87396, -======= - "id": 119158, ->>>>>>> Stashed changes -======= - "id": 119158, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12009:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12000:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11005:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10996:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11005:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "10996:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "11991:24:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11991:24:147", -======= - "src": "10987:24:163", ->>>>>>> Stashed changes -======= - "src": "10987:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87398, - "nodeType": "ExpressionStatement", - "src": "11991:24:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87398, - "nodeType": "ExpressionStatement", - "src": "11991:24:147" -======= - "id": 119160, - "nodeType": "ExpressionStatement", - "src": "10987:24:163" ->>>>>>> Stashed changes -======= - "id": 119160, - "nodeType": "ExpressionStatement", - "src": "10987:24:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 87416, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87416, -======= - "id": 119178, ->>>>>>> Stashed changes -======= - "id": 119178, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 87411, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87411, -======= - "id": 119173, ->>>>>>> Stashed changes -======= - "id": 119173, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 87406, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87406, -======= - "id": 119168, ->>>>>>> Stashed changes -======= - "id": 119168, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87401, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87401, -======= - "id": 119163, ->>>>>>> Stashed changes -======= - "id": 119163, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87399, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87392, - "src": "12025:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119161, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11021:6:163", ->>>>>>> Stashed changes -======= - "id": 119161, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11021:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", -<<<<<<< Updated upstream - "id": 87400, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87400, -======= - "id": 119162, ->>>>>>> Stashed changes -======= - "id": 119162, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "12035:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12035:1:147", -======= - "src": "11031:1:163", ->>>>>>> Stashed changes -======= - "src": "11031:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream - "src": "12025:11:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12025:11:147", -======= - "src": "11021:11:163", ->>>>>>> Stashed changes -======= - "src": "11021:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87405, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87405, -======= - "id": 119167, ->>>>>>> Stashed changes -======= - "id": 119167, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87402, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87383, - "src": "12040:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 119164, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119145, - "src": "11036:9:163", ->>>>>>> Stashed changes -======= - "id": 119164, - "name": "ronPrices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119145, - "src": "11036:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 87403, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87403, -======= - "id": 119165, ->>>>>>> Stashed changes -======= - "id": 119165, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12050:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12040:16:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11046:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11036:16:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11046:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11036:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87404, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87392, - "src": "12060:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119166, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11056:6:163", ->>>>>>> Stashed changes -======= - "id": 119166, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11056:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12040:26:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12040:26:147", -======= - "src": "11036:26:163", ->>>>>>> Stashed changes -======= - "src": "11036:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "12025:41:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12025:41:147", -======= - "src": "11021:41:163", ->>>>>>> Stashed changes -======= - "src": "11021:41:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87410, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87410, -======= - "id": 119172, ->>>>>>> Stashed changes -======= - "id": 119172, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87407, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87386, - "src": "12070:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 119169, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119148, - "src": "11066:11:163", ->>>>>>> Stashed changes -======= - "id": 119169, - "name": "proofHashes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119148, - "src": "11066:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 87408, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87408, -======= - "id": 119170, ->>>>>>> Stashed changes -======= - "id": 119170, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12082:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12070:18:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11078:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11066:18:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11078:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11066:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87409, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87392, - "src": "12092:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119171, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11088:6:163", ->>>>>>> Stashed changes -======= - "id": 119171, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11088:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12070:28:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12070:28:147", -======= - "src": "11066:28:163", ->>>>>>> Stashed changes -======= - "src": "11066:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "12025:73:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12025:73:147", -======= - "src": "11021:73:163", ->>>>>>> Stashed changes -======= - "src": "11021:73:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87415, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87415, -======= - "id": 119177, ->>>>>>> Stashed changes -======= - "id": 119177, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87412, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87389, - "src": "12102:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119174, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119151, - "src": "11098:8:163", ->>>>>>> Stashed changes -======= - "id": 119174, - "name": "setTypes", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119151, - "src": "11098:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, -<<<<<<< Updated upstream - "id": 87413, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87413, -======= - "id": 119175, ->>>>>>> Stashed changes -======= - "id": 119175, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12111:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12102:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11107:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11098:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11107:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "11098:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87414, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87392, - "src": "12121:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119176, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11117:6:163", ->>>>>>> Stashed changes -======= - "id": 119176, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119154, - "src": "11117:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12102:25:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12102:25:147", -======= - "src": "11098:25:163", ->>>>>>> Stashed changes -======= - "src": "11098:25:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "12025:102:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12025:102:147", -======= - "src": "11021:102:163", ->>>>>>> Stashed changes -======= - "src": "11021:102:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87421, - "nodeType": "IfStatement", - "src": "12021:150:147", - "trueBody": { - "id": 87420, - "nodeType": "Block", - "src": "12129:42:147", -<<<<<<< Updated upstream -======= -======= - "id": 119183, - "nodeType": "IfStatement", - "src": "11017:150:163", - "trueBody": { - "id": 119182, - "nodeType": "Block", - "src": "11125:42:163", ->>>>>>> Stashed changes -======= - "id": 119183, - "nodeType": "IfStatement", - "src": "11017:150:163", - "trueBody": { - "id": 119182, - "nodeType": "Block", - "src": "11125:42:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87417, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91359, - "src": "12144:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 119179, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123300, - "src": "11140:18:163", ->>>>>>> Stashed changes -======= - "id": 119179, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123300, - "src": "11140:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, -<<<<<<< Updated upstream - "id": 87418, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87418, -======= - "id": 119180, ->>>>>>> Stashed changes -======= - "id": 119180, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "12144:20:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12144:20:147", -======= - "src": "11140:20:163", ->>>>>>> Stashed changes -======= - "src": "11140:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87419, - "nodeType": "RevertStatement", - "src": "12137:27:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87419, - "nodeType": "RevertStatement", - "src": "12137:27:147" -======= - "id": 119181, - "nodeType": "RevertStatement", - "src": "11133:27:163" ->>>>>>> Stashed changes -======= - "id": 119181, - "nodeType": "RevertStatement", - "src": "11133:27:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87377, - "nodeType": "StructuredDocumentation", - "src": "11662:91:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87377, - "nodeType": "StructuredDocumentation", - "src": "11662:91:147", -======= - "id": 119139, - "nodeType": "StructuredDocumentation", - "src": "10658:91:163", ->>>>>>> Stashed changes -======= - "id": 119139, - "nodeType": "StructuredDocumentation", - "src": "10658:91:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_requireBulkSetDomainPriceArgumentsValid", -<<<<<<< Updated upstream - "nameLocation": "11765:40:147", - "parameters": { - "id": 87390, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "11765:40:147", - "parameters": { - "id": 87390, -======= - "nameLocation": "10761:40:163", - "parameters": { - "id": 119152, ->>>>>>> Stashed changes -======= - "nameLocation": "10761:40:163", - "parameters": { - "id": 119152, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87380, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "11830:8:147", - "nodeType": "VariableDeclaration", - "scope": 87423, - "src": "11811:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 119142, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "10826:8:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10807:27:163", ->>>>>>> Stashed changes -======= - "id": 119142, - "mutability": "mutable", - "name": "lbHashes", - "nameLocation": "10826:8:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10807:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87378, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11811:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119140, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10807:7:163", ->>>>>>> Stashed changes -======= - "id": 119140, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10807:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 87379, - "nodeType": "ArrayTypeName", - "src": "11811:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87379, - "nodeType": "ArrayTypeName", - "src": "11811:9:147", -======= - "id": 119141, - "nodeType": "ArrayTypeName", - "src": "10807:9:163", ->>>>>>> Stashed changes -======= - "id": 119141, - "nodeType": "ArrayTypeName", - "src": "10807:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87383, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "11863:9:147", - "nodeType": "VariableDeclaration", - "scope": 87423, - "src": "11844:28:147", -<<<<<<< Updated upstream -======= -======= - "id": 119145, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "10859:9:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10840:28:163", ->>>>>>> Stashed changes -======= - "id": 119145, - "mutability": "mutable", - "name": "ronPrices", - "nameLocation": "10859:9:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10840:28:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87381, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11844:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10840:7:163", ->>>>>>> Stashed changes -======= - "id": 119143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10840:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87382, - "nodeType": "ArrayTypeName", - "src": "11844:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87382, - "nodeType": "ArrayTypeName", - "src": "11844:9:147", -======= - "id": 119144, - "nodeType": "ArrayTypeName", - "src": "10840:9:163", ->>>>>>> Stashed changes -======= - "id": 119144, - "nodeType": "ArrayTypeName", - "src": "10840:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87386, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "11897:11:147", - "nodeType": "VariableDeclaration", - "scope": 87423, - "src": "11878:30:147", -<<<<<<< Updated upstream -======= -======= - "id": 119148, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "10893:11:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10874:30:163", ->>>>>>> Stashed changes -======= - "id": 119148, - "mutability": "mutable", - "name": "proofHashes", - "nameLocation": "10893:11:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10874:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87384, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11878:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119146, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10874:7:163", ->>>>>>> Stashed changes -======= - "id": 119146, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10874:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 87385, - "nodeType": "ArrayTypeName", - "src": "11878:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87385, - "nodeType": "ArrayTypeName", - "src": "11878:9:147", -======= - "id": 119147, - "nodeType": "ArrayTypeName", - "src": "10874:9:163", ->>>>>>> Stashed changes -======= - "id": 119147, - "nodeType": "ArrayTypeName", - "src": "10874:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87389, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "11933:8:147", - "nodeType": "VariableDeclaration", - "scope": 87423, - "src": "11914:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 119151, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "10929:8:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10910:27:163", ->>>>>>> Stashed changes -======= - "id": 119151, - "mutability": "mutable", - "name": "setTypes", - "nameLocation": "10929:8:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10910:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87387, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11914:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10910:7:163", ->>>>>>> Stashed changes -======= - "id": 119149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10910:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87388, - "nodeType": "ArrayTypeName", - "src": "11914:9:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87388, - "nodeType": "ArrayTypeName", - "src": "11914:9:147", -======= - "id": 119150, - "nodeType": "ArrayTypeName", - "src": "10910:9:163", ->>>>>>> Stashed changes -======= - "id": 119150, - "nodeType": "ArrayTypeName", - "src": "10910:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "11805:140:147" - }, - "returnParameters": { - "id": 87393, -<<<<<<< Updated upstream -======= -======= - "src": "10801:140:163" - }, - "returnParameters": { - "id": 119155, ->>>>>>> Stashed changes -======= - "src": "10801:140:163" - }, - "returnParameters": { - "id": 119155, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87392, - "mutability": "mutable", - "name": "length", - "nameLocation": "11977:6:147", - "nodeType": "VariableDeclaration", - "scope": 87423, - "src": "11969:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119154, - "mutability": "mutable", - "name": "length", - "nameLocation": "10973:6:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10965:14:163", ->>>>>>> Stashed changes -======= - "id": 119154, - "mutability": "mutable", - "name": "length", - "nameLocation": "10973:6:163", - "nodeType": "VariableDeclaration", - "scope": 119185, - "src": "10965:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87391, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11969:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119153, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10965:7:163", ->>>>>>> Stashed changes -======= - "id": 119153, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10965:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "11968:16:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "11968:16:147" - }, - "scope": 87685, -======= - "src": "10964:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "10964:16:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87488, - "nodeType": "FunctionDefinition", - "src": "12294:503:147", - "nodes": [], - "body": { - "id": 87487, - "nodeType": "Block", - "src": "12480:317:147", -<<<<<<< Updated upstream -======= -======= - "id": 119250, - "nodeType": "FunctionDefinition", - "src": "11290:503:163", - "nodes": [], - "body": { - "id": 119249, - "nodeType": "Block", - "src": "11476:317:163", ->>>>>>> Stashed changes -======= - "id": 119250, - "nodeType": "FunctionDefinition", - "src": "11290:503:163", - "nodes": [], - "body": { - "id": 119249, - "nodeType": "Block", - "src": "11476:317:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 87442 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87442 -======= - 119204 ->>>>>>> Stashed changes -======= - 119204 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87442, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "12494:8:147", - "nodeType": "VariableDeclaration", - "scope": 87487, - "src": "12486:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119204, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "11490:8:163", - "nodeType": "VariableDeclaration", - "scope": 119249, - "src": "11482:16:163", ->>>>>>> Stashed changes -======= - "id": 119204, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "11490:8:163", - "nodeType": "VariableDeclaration", - "scope": 119249, - "src": "11482:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87441, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12486:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119203, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11482:7:163", ->>>>>>> Stashed changes -======= - "id": 119203, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11482:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87446, - "initialValue": { - "arguments": [ - { - "id": 87444, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87430, - "src": "12521:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119208, - "initialValue": { - "arguments": [ - { - "id": 119206, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119192, - "src": "11517:8:163", ->>>>>>> Stashed changes -======= - "id": 119208, - "initialValue": { - "arguments": [ - { - "id": 119206, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119192, - "src": "11517:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87443, - "name": "convertRONToUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87376, - "src": "12505:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 119205, - "name": "convertRONToUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119138, - "src": "11501:15:163", ->>>>>>> Stashed changes -======= - "id": 119205, - "name": "convertRONToUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119138, - "src": "11501:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87445, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87445, -======= - "id": 119207, ->>>>>>> Stashed changes -======= - "id": 119207, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "12505:25:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12505:25:147", -======= - "src": "11501:25:163", ->>>>>>> Stashed changes -======= - "src": "11501:25:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "12486:44:147" - }, - { - "assignments": [ - 87449 -<<<<<<< Updated upstream -======= -======= - "src": "11482:44:163" - }, - { - "assignments": [ - 119211 ->>>>>>> Stashed changes -======= - "src": "11482:44:163" - }, - { - "assignments": [ - 119211 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87449, - "mutability": "mutable", - "name": "dp", - "nameLocation": "12561:2:147", - "nodeType": "VariableDeclaration", - "scope": 87487, - "src": "12536:27:147", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 87448, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87447, - "name": "TimestampWrapper", - "nameLocations": [ - "12536:16:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93585, - "src": "12536:16:147" - }, - "referencedDeclaration": 93585, - "src": "12536:16:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119211, - "mutability": "mutable", - "name": "dp", - "nameLocation": "11557:2:163", - "nodeType": "VariableDeclaration", - "scope": 119249, - "src": "11532:27:163", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 119210, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119209, - "name": "TimestampWrapper", - "nameLocations": [ - "11532:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "11532:16:163" - }, - "referencedDeclaration": 125530, - "src": "11532:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119211, - "mutability": "mutable", - "name": "dp", - "nameLocation": "11557:2:163", - "nodeType": "VariableDeclaration", - "scope": 119249, - "src": "11532:27:163", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 119210, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119209, - "name": "TimestampWrapper", - "nameLocations": [ - "11532:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "11532:16:163" - }, - "referencedDeclaration": 125530, - "src": "11532:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct TimestampWrapper" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87453, - "initialValue": { - "baseExpression": { - "id": 87450, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86420, - "src": "12566:3:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$93585_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 87452, - "indexExpression": { - "id": 87451, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87428, - "src": "12570:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119215, - "initialValue": { - "baseExpression": { - "id": 119212, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118335, - "src": "11562:3:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 119214, - "indexExpression": { - "id": 119213, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119190, - "src": "11566:6:163", ->>>>>>> Stashed changes -======= - "id": 119215, - "initialValue": { - "baseExpression": { - "id": 119212, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118335, - "src": "11562:3:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 119214, - "indexExpression": { - "id": 119213, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119190, - "src": "11566:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "12566:11:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12566:11:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage", -======= - "src": "11562:11:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", ->>>>>>> Stashed changes -======= - "src": "11562:11:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct TimestampWrapper storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "12536:41:147" - }, - { - "expression": { - "id": 87461, -<<<<<<< Updated upstream -======= -======= - "src": "11532:41:163" - }, - { - "expression": { - "id": 119223, ->>>>>>> Stashed changes -======= - "src": "11532:41:163" - }, - { - "expression": { - "id": 119223, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87454, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87439, - "src": "12583:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119216, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119201, - "src": "11579:7:163", ->>>>>>> Stashed changes -======= - "id": 119216, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119201, - "src": "11579:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, -<<<<<<< Updated upstream - "id": 87460, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87460, -======= - "id": 119222, ->>>>>>> Stashed changes -======= - "id": 119222, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87455, - "name": "forced", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87436, - "src": "12593:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119217, - "name": "forced", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119198, - "src": "11589:6:163", ->>>>>>> Stashed changes -======= - "id": 119217, - "name": "forced", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119198, - "src": "11589:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87459, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87459, -======= - "id": 119221, ->>>>>>> Stashed changes -======= - "id": 119221, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87456, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87449, - "src": "12603:2:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 87457, -<<<<<<< Updated upstream -======= -======= - "id": 119218, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11599:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119219, ->>>>>>> Stashed changes -======= - "id": 119218, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11599:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119219, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12606:5:147", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 93582, - "src": "12603:8:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11602:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "11599:8:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11602:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "11599:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87458, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87442, - "src": "12614:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119220, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11610:8:163", ->>>>>>> Stashed changes -======= - "id": 119220, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11610:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12603:19:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12603:19:147", -======= - "src": "11599:19:163", ->>>>>>> Stashed changes -======= - "src": "11599:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "12593:29:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12593:29:147", -======= - "src": "11589:29:163", ->>>>>>> Stashed changes -======= - "src": "11589:29:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream - "src": "12583:39:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12583:39:147", -======= - "src": "11579:39:163", ->>>>>>> Stashed changes -======= - "src": "11579:39:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87462, - "nodeType": "ExpressionStatement", - "src": "12583:39:147" - }, - { - "condition": { - "id": 87463, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87439, - "src": "12633:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119224, - "nodeType": "ExpressionStatement", - "src": "11579:39:163" - }, - { - "condition": { - "id": 119225, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119201, - "src": "11629:7:163", ->>>>>>> Stashed changes -======= - "id": 119224, - "nodeType": "ExpressionStatement", - "src": "11579:39:163" - }, - { - "condition": { - "id": 119225, - "name": "updated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119201, - "src": "11629:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87486, - "nodeType": "IfStatement", - "src": "12629:164:147", - "trueBody": { - "id": 87485, - "nodeType": "Block", - "src": "12642:151:147", - "statements": [ - { - "expression": { - "id": 87468, -<<<<<<< Updated upstream -======= -======= - "id": 119248, - "nodeType": "IfStatement", - "src": "11625:164:163", - "trueBody": { - "id": 119247, - "nodeType": "Block", - "src": "11638:151:163", - "statements": [ - { - "expression": { - "id": 119230, ->>>>>>> Stashed changes -======= - "id": 119248, - "nodeType": "IfStatement", - "src": "11625:164:163", - "trueBody": { - "id": 119247, - "nodeType": "Block", - "src": "11638:151:163", - "statements": [ - { - "expression": { - "id": 119230, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87464, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87449, - "src": "12650:2:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 87466, -<<<<<<< Updated upstream -======= -======= - "id": 119226, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11646:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119228, ->>>>>>> Stashed changes -======= - "id": 119226, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11646:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119228, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12653:5:147", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 93582, - "src": "12650:8:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11649:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "11646:8:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11649:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "11646:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87467, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87442, - "src": "12661:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119229, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11657:8:163", ->>>>>>> Stashed changes -======= - "id": 119229, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11657:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12650:19:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12650:19:147", -======= - "src": "11646:19:163", ->>>>>>> Stashed changes -======= - "src": "11646:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87469, - "nodeType": "ExpressionStatement", - "src": "12650:19:147" - }, - { - "expression": { - "id": 87475, -<<<<<<< Updated upstream -======= -======= - "id": 119231, - "nodeType": "ExpressionStatement", - "src": "11646:19:163" - }, - { - "expression": { - "id": 119237, ->>>>>>> Stashed changes -======= - "id": 119231, - "nodeType": "ExpressionStatement", - "src": "11646:19:163" - }, - { - "expression": { - "id": 119237, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87470, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87449, - "src": "12677:2:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 87472, -<<<<<<< Updated upstream -======= -======= - "id": 119232, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11673:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119234, ->>>>>>> Stashed changes -======= - "id": 119232, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119211, - "src": "11673:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119234, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12680:9:147", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 93584, - "src": "12677:12:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11676:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 125529, - "src": "11673:12:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11676:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 125529, - "src": "11673:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { -<<<<<<< Updated upstream - "id": 87473, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87473, -======= - "id": 119235, ->>>>>>> Stashed changes -======= - "id": 119235, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, -<<<<<<< Updated upstream - "src": "12692:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12692:5:147", -======= - "src": "11688:5:163", ->>>>>>> Stashed changes -======= - "src": "11688:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, -<<<<<<< Updated upstream - "id": 87474, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87474, -======= - "id": 119236, ->>>>>>> Stashed changes -======= - "id": 119236, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "12698:9:147", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "12692:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "11694:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "11688:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "11694:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "11688:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12677:30:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12677:30:147", -======= - "src": "11673:30:163", ->>>>>>> Stashed changes -======= - "src": "11673:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87476, - "nodeType": "ExpressionStatement", - "src": "12677:30:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87476, - "nodeType": "ExpressionStatement", - "src": "12677:30:147" -======= - "id": 119238, - "nodeType": "ExpressionStatement", - "src": "11673:30:163" ->>>>>>> Stashed changes -======= - "id": 119238, - "nodeType": "ExpressionStatement", - "src": "11673:30:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87478, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87426, - "src": "12739:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119240, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119188, - "src": "11735:8:163", ->>>>>>> Stashed changes -======= - "id": 119240, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119188, - "src": "11735:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87479, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87428, - "src": "12749:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119241, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119190, - "src": "11745:6:163", ->>>>>>> Stashed changes -======= - "id": 119241, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119190, - "src": "11745:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87480, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87442, - "src": "12757:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119242, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11753:8:163", ->>>>>>> Stashed changes -======= - "id": 119242, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119204, - "src": "11753:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87481, - "name": "proofHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87432, - "src": "12767:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 119243, - "name": "proofHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119194, - "src": "11763:9:163", ->>>>>>> Stashed changes -======= - "id": 119243, - "name": "proofHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119194, - "src": "11763:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87482, - "name": "setType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87434, - "src": "12778:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119244, - "name": "setType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119196, - "src": "11774:7:163", ->>>>>>> Stashed changes -======= - "id": 119244, - "name": "setType", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119196, - "src": "11774:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87477, - "name": "DomainPriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91435, - "src": "12720:18:147", -<<<<<<< Updated upstream -======= -======= - "id": 119239, - "name": "DomainPriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123377, - "src": "11716:18:163", ->>>>>>> Stashed changes -======= - "id": 119239, - "name": "DomainPriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123377, - "src": "11716:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$", - "typeString": "function (address,bytes32,uint256,bytes32,uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87483, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87483, -======= - "id": 119245, ->>>>>>> Stashed changes -======= - "id": 119245, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "12720:66:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12720:66:147", -======= - "src": "11716:66:163", ->>>>>>> Stashed changes -======= - "src": "11716:66:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87484, - "nodeType": "EmitStatement", - "src": "12715:71:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87484, - "nodeType": "EmitStatement", - "src": "12715:71:147" -======= - "id": 119246, - "nodeType": "EmitStatement", - "src": "11711:71:163" ->>>>>>> Stashed changes -======= - "id": 119246, - "nodeType": "EmitStatement", - "src": "11711:71:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87424, - "nodeType": "StructuredDocumentation", - "src": "12179:112:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87424, - "nodeType": "StructuredDocumentation", - "src": "12179:112:147", -======= - "id": 119186, - "nodeType": "StructuredDocumentation", - "src": "11175:112:163", ->>>>>>> Stashed changes -======= - "id": 119186, - "nodeType": "StructuredDocumentation", - "src": "11175:112:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Helper method to set domain price.\n Emits an event {DomainPriceUpdated} optionally." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setDomainPrice", -<<<<<<< Updated upstream - "nameLocation": "12303:15:147", - "parameters": { - "id": 87437, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "12303:15:147", - "parameters": { - "id": 87437, -======= - "nameLocation": "11299:15:163", - "parameters": { - "id": 119199, ->>>>>>> Stashed changes -======= - "nameLocation": "11299:15:163", - "parameters": { - "id": 119199, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87426, - "mutability": "mutable", - "name": "operator", - "nameLocation": "12332:8:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12324:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119188, - "mutability": "mutable", - "name": "operator", - "nameLocation": "11328:8:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11320:16:163", ->>>>>>> Stashed changes -======= - "id": 119188, - "mutability": "mutable", - "name": "operator", - "nameLocation": "11328:8:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11320:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87425, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12324:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119187, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11320:7:163", ->>>>>>> Stashed changes -======= - "id": 119187, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11320:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87428, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "12354:6:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12346:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119190, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "11350:6:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11342:14:163", ->>>>>>> Stashed changes -======= - "id": 119190, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "11350:6:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11342:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87427, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12346:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119189, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11342:7:163", ->>>>>>> Stashed changes -======= - "id": 119189, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11342:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87430, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "12374:8:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12366:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119192, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "11370:8:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11362:16:163", ->>>>>>> Stashed changes -======= - "id": 119192, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "11370:8:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11362:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87429, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12366:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11362:7:163", ->>>>>>> Stashed changes -======= - "id": 119191, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11362:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87432, - "mutability": "mutable", - "name": "proofHash", - "nameLocation": "12396:9:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12388:17:147", -<<<<<<< Updated upstream -======= -======= - "id": 119194, - "mutability": "mutable", - "name": "proofHash", - "nameLocation": "11392:9:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11384:17:163", ->>>>>>> Stashed changes -======= - "id": 119194, - "mutability": "mutable", - "name": "proofHash", - "nameLocation": "11392:9:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11384:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87431, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12388:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119193, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11384:7:163", ->>>>>>> Stashed changes -======= - "id": 119193, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11384:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87434, - "mutability": "mutable", - "name": "setType", - "nameLocation": "12419:7:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12411:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 119196, - "mutability": "mutable", - "name": "setType", - "nameLocation": "11415:7:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11407:15:163", ->>>>>>> Stashed changes -======= - "id": 119196, - "mutability": "mutable", - "name": "setType", - "nameLocation": "11415:7:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11407:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87433, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12411:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119195, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11407:7:163", ->>>>>>> Stashed changes -======= - "id": 119195, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11407:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87436, - "mutability": "mutable", - "name": "forced", - "nameLocation": "12437:6:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12432:11:147", -<<<<<<< Updated upstream -======= -======= - "id": 119198, - "mutability": "mutable", - "name": "forced", - "nameLocation": "11433:6:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11428:11:163", ->>>>>>> Stashed changes -======= - "id": 119198, - "mutability": "mutable", - "name": "forced", - "nameLocation": "11433:6:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11428:11:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87435, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12432:4:147", -<<<<<<< Updated upstream -======= -======= - "id": 119197, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "11428:4:163", ->>>>>>> Stashed changes -======= - "id": 119197, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "11428:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "12318:129:147" - }, - "returnParameters": { - "id": 87440, -<<<<<<< Updated upstream -======= -======= - "src": "11314:129:163" - }, - "returnParameters": { - "id": 119202, ->>>>>>> Stashed changes -======= - "src": "11314:129:163" - }, - "returnParameters": { - "id": 119202, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87439, - "mutability": "mutable", - "name": "updated", - "nameLocation": "12471:7:147", - "nodeType": "VariableDeclaration", - "scope": 87488, - "src": "12466:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 119201, - "mutability": "mutable", - "name": "updated", - "nameLocation": "11467:7:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11462:12:163", ->>>>>>> Stashed changes -======= - "id": 119201, - "mutability": "mutable", - "name": "updated", - "nameLocation": "11467:7:163", - "nodeType": "VariableDeclaration", - "scope": 119250, - "src": "11462:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87438, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12466:4:147", -<<<<<<< Updated upstream -======= -======= - "id": 119200, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "11462:4:163", ->>>>>>> Stashed changes -======= - "id": 119200, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "11462:4:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "12465:14:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12465:14:147" - }, - "scope": 87685, -======= - "src": "11461:14:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "11461:14:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87505, - "nodeType": "FunctionDefinition", - "src": "12899:121:147", - "nodes": [], - "body": { - "id": 87504, - "nodeType": "Block", - "src": "12945:75:147", -<<<<<<< Updated upstream -======= -======= - "id": 119267, - "nodeType": "FunctionDefinition", - "src": "11895:121:163", - "nodes": [], - "body": { - "id": 119266, - "nodeType": "Block", - "src": "11941:75:163", ->>>>>>> Stashed changes -======= - "id": 119267, - "nodeType": "FunctionDefinition", - "src": "11895:121:163", - "nodes": [], - "body": { - "id": 119266, - "nodeType": "Block", - "src": "11941:75:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 87496, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87496, -======= - "id": 119258, ->>>>>>> Stashed changes -======= - "id": 119258, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87494, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86396, - "src": "12951:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 119256, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118311, - "src": "11947:9:163", ->>>>>>> Stashed changes -======= - "id": 119256, - "name": "_taxRatio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118311, - "src": "11947:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87495, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87491, - "src": "12963:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 119257, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119253, - "src": "11959:5:163", ->>>>>>> Stashed changes -======= - "id": 119257, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119253, - "src": "11959:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "12951:17:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12951:17:147", -======= - "src": "11947:17:163", ->>>>>>> Stashed changes -======= - "src": "11947:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87497, - "nodeType": "ExpressionStatement", - "src": "12951:17:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87497, - "nodeType": "ExpressionStatement", - "src": "12951:17:147" -======= - "id": 119259, - "nodeType": "ExpressionStatement", - "src": "11947:17:163" ->>>>>>> Stashed changes -======= - "id": 119259, - "nodeType": "ExpressionStatement", - "src": "11947:17:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87499, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "12995:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 119261, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "11991:10:163", ->>>>>>> Stashed changes -======= - "id": 119261, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "11991:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 87500, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87500, -======= - "id": 119262, ->>>>>>> Stashed changes -======= - "id": 119262, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "12995:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12995:12:147", -======= - "src": "11991:12:163", ->>>>>>> Stashed changes -======= - "src": "11991:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87501, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87491, - "src": "13009:5:147", -<<<<<<< Updated upstream -======= -======= - "id": 119263, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119253, - "src": "12005:5:163", ->>>>>>> Stashed changes -======= - "id": 119263, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119253, - "src": "12005:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87498, - "name": "TaxRatioUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91388, - "src": "12979:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 119260, - "name": "TaxRatioUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123329, - "src": "11975:15:163", ->>>>>>> Stashed changes -======= - "id": 119260, - "name": "TaxRatioUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123329, - "src": "11975:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87502, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87502, -======= - "id": 119264, ->>>>>>> Stashed changes -======= - "id": 119264, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "12979:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "12979:36:147", -======= - "src": "11975:36:163", ->>>>>>> Stashed changes -======= - "src": "11975:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87503, - "nodeType": "EmitStatement", - "src": "12974:41:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87503, - "nodeType": "EmitStatement", - "src": "12974:41:147" -======= - "id": 119265, - "nodeType": "EmitStatement", - "src": "11970:41:163" ->>>>>>> Stashed changes -======= - "id": 119265, - "nodeType": "EmitStatement", - "src": "11970:41:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87489, - "nodeType": "StructuredDocumentation", - "src": "12801:95:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87489, - "nodeType": "StructuredDocumentation", - "src": "12801:95:147", -======= - "id": 119251, - "nodeType": "StructuredDocumentation", - "src": "11797:95:163", ->>>>>>> Stashed changes -======= - "id": 119251, - "nodeType": "StructuredDocumentation", - "src": "11797:95:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Sets renewal reservation ratio.\n Emits an event {TaxRatioUpdated}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setTaxRatio", -<<<<<<< Updated upstream - "nameLocation": "12908:12:147", - "parameters": { - "id": 87492, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "12908:12:147", - "parameters": { - "id": 87492, -======= - "nameLocation": "11904:12:163", - "parameters": { - "id": 119254, ->>>>>>> Stashed changes -======= - "nameLocation": "11904:12:163", - "parameters": { - "id": 119254, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87491, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "12929:5:147", - "nodeType": "VariableDeclaration", - "scope": 87505, - "src": "12921:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 119253, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "11925:5:163", - "nodeType": "VariableDeclaration", - "scope": 119267, - "src": "11917:13:163", ->>>>>>> Stashed changes -======= - "id": 119253, - "mutability": "mutable", - "name": "ratio", - "nameLocation": "11925:5:163", - "nodeType": "VariableDeclaration", - "scope": 119267, - "src": "11917:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12921:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119252, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11917:7:163", ->>>>>>> Stashed changes -======= - "id": 119252, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11917:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "12920:15:147" - }, - "returnParameters": { - "id": 87493, - "nodeType": "ParameterList", - "parameters": [], - "src": "12945:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "11916:15:163" - }, - "returnParameters": { - "id": 119255, - "nodeType": "ParameterList", - "parameters": [], - "src": "11941:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "11916:15:163" - }, - "returnParameters": { - "id": 119255, - "nodeType": "ParameterList", - "parameters": [], - "src": "11941:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87526, - "nodeType": "FunctionDefinition", - "src": "13130:243:147", - "nodes": [], - "body": { - "id": 87525, - "nodeType": "Block", - "src": "13217:156:147", -<<<<<<< Updated upstream -======= -======= - "id": 119288, - "nodeType": "FunctionDefinition", - "src": "12126:243:163", - "nodes": [], - "body": { - "id": 119287, - "nodeType": "Block", - "src": "12213:156:163", ->>>>>>> Stashed changes -======= - "id": 119288, - "nodeType": "FunctionDefinition", - "src": "12126:243:163", - "nodes": [], - "body": { - "id": 119287, - "nodeType": "Block", - "src": "12213:156:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 87514, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87514, -======= - "id": 119276, ->>>>>>> Stashed changes -======= - "id": 119276, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87512, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86409, - "src": "13223:13:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", -<<<<<<< Updated upstream -======= -======= - "id": 119274, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "12219:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", ->>>>>>> Stashed changes -======= - "id": 119274, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "12219:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87513, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87509, - "src": "13239:20:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "src": "13223:36:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 87515, - "nodeType": "ExpressionStatement", - "src": "13223:36:147" -<<<<<<< Updated upstream -======= -======= - "id": 119275, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12235:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "src": "12219:36:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 119277, - "nodeType": "ExpressionStatement", - "src": "12219:36:163" ->>>>>>> Stashed changes -======= - "id": 119275, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12235:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "src": "12219:36:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 119277, - "nodeType": "ExpressionStatement", - "src": "12219:36:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87517, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "13298:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 119279, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "12294:10:163", ->>>>>>> Stashed changes -======= - "id": 119279, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "12294:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 87518, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87518, -======= - "id": 119280, ->>>>>>> Stashed changes -======= - "id": 119280, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "13298:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13298:12:147", -======= - "src": "12294:12:163", ->>>>>>> Stashed changes -======= - "src": "12294:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87519, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87509, - "src": "13312:20:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 87520, -<<<<<<< Updated upstream -======= -======= - "id": 119281, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12308:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 119282, ->>>>>>> Stashed changes -======= - "id": 119281, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12308:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 119282, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13333:5:147", - "memberName": "ratio", - "nodeType": "MemberAccess", - "referencedDeclaration": 93659, - "src": "13312:26:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12329:5:163", - "memberName": "ratio", - "nodeType": "MemberAccess", - "referencedDeclaration": 125604, - "src": "12308:26:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12329:5:163", - "memberName": "ratio", - "nodeType": "MemberAccess", - "referencedDeclaration": 125604, - "src": "12308:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint192", - "typeString": "uint192" - } - }, - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87521, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87509, - "src": "13340:20:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 87522, -<<<<<<< Updated upstream -======= -======= - "id": 119283, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12336:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 119284, ->>>>>>> Stashed changes -======= - "id": 119283, - "name": "domainPriceScaleRule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119271, - "src": "12336:20:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler calldata" - } - }, - "id": 119284, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13361:6:147", - "memberName": "period", - "nodeType": "MemberAccess", - "referencedDeclaration": 93661, - "src": "13340:27:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12357:6:163", - "memberName": "period", - "nodeType": "MemberAccess", - "referencedDeclaration": 125606, - "src": "12336:27:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12357:6:163", - "memberName": "period", - "nodeType": "MemberAccess", - "referencedDeclaration": 125606, - "src": "12336:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint192", - "typeString": "uint192" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87516, - "name": "DomainPriceScaleRuleUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91444, - "src": "13270:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 119278, - "name": "DomainPriceScaleRuleUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123386, - "src": "12266:27:163", ->>>>>>> Stashed changes -======= - "id": 119278, - "name": "DomainPriceScaleRuleUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123386, - "src": "12266:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint192_$_t_uint64_$returns$__$", - "typeString": "function (address,uint192,uint64)" - } - }, -<<<<<<< Updated upstream - "id": 87523, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87523, -======= - "id": 119285, ->>>>>>> Stashed changes -======= - "id": 119285, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "13270:98:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13270:98:147", -======= - "src": "12266:98:163", ->>>>>>> Stashed changes -======= - "src": "12266:98:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87524, - "nodeType": "EmitStatement", - "src": "13265:103:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87524, - "nodeType": "EmitStatement", - "src": "13265:103:147" -======= - "id": 119286, - "nodeType": "EmitStatement", - "src": "12261:103:163" ->>>>>>> Stashed changes -======= - "id": 119286, - "nodeType": "EmitStatement", - "src": "12261:103:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87506, - "nodeType": "StructuredDocumentation", - "src": "13024:103:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87506, - "nodeType": "StructuredDocumentation", - "src": "13024:103:147", -======= - "id": 119268, - "nodeType": "StructuredDocumentation", - "src": "12020:103:163", ->>>>>>> Stashed changes -======= - "id": 119268, - "nodeType": "StructuredDocumentation", - "src": "12020:103:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Sets domain price scale rule.\n Emits events {DomainPriceScaleRuleUpdated}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setDomainPriceScaleRule", -<<<<<<< Updated upstream - "nameLocation": "13139:24:147", - "parameters": { - "id": 87510, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "13139:24:147", - "parameters": { - "id": 87510, -======= - "nameLocation": "12135:24:163", - "parameters": { - "id": 119272, ->>>>>>> Stashed changes -======= - "nameLocation": "12135:24:163", - "parameters": { - "id": 119272, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87509, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "13186:20:147", - "nodeType": "VariableDeclaration", - "scope": 87526, - "src": "13164:42:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 87508, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87507, - "name": "PeriodScaler", - "nameLocations": [ - "13164:12:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93662, - "src": "13164:12:147" - }, - "referencedDeclaration": 93662, - "src": "13164:12:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119271, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "12182:20:163", - "nodeType": "VariableDeclaration", - "scope": 119288, - "src": "12160:42:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 119270, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119269, - "name": "PeriodScaler", - "nameLocations": [ - "12160:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "12160:12:163" - }, - "referencedDeclaration": 125607, - "src": "12160:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119271, - "mutability": "mutable", - "name": "domainPriceScaleRule", - "nameLocation": "12182:20:163", - "nodeType": "VariableDeclaration", - "scope": 119288, - "src": "12160:42:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", - "typeString": "struct PeriodScaler" - }, - "typeName": { - "id": 119270, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119269, - "name": "PeriodScaler", - "nameLocations": [ - "12160:12:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125607, - "src": "12160:12:163" - }, - "referencedDeclaration": 125607, - "src": "12160:12:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct PeriodScaler" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13163:44:147" - }, - "returnParameters": { - "id": 87511, - "nodeType": "ParameterList", - "parameters": [], - "src": "13217:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "12159:44:163" - }, - "returnParameters": { - "id": 119273, - "nodeType": "ParameterList", - "parameters": [], - "src": "12213:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "12159:44:163" - }, - "returnParameters": { - "id": 119273, - "nodeType": "ParameterList", - "parameters": [], - "src": "12213:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87610, - "nodeType": "FunctionDefinition", - "src": "13530:754:147", - "nodes": [], - "body": { - "id": 87609, - "nodeType": "Block", - "src": "13607:677:147", -<<<<<<< Updated upstream -======= -======= - "id": 119372, - "nodeType": "FunctionDefinition", - "src": "12526:754:163", - "nodes": [], - "body": { - "id": 119371, - "nodeType": "Block", - "src": "12603:677:163", ->>>>>>> Stashed changes -======= - "id": 119372, - "nodeType": "FunctionDefinition", - "src": "12526:754:163", - "nodes": [], - "body": { - "id": 119371, - "nodeType": "Block", - "src": "12603:677:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 87535 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87535 -======= - 119297 ->>>>>>> Stashed changes -======= - 119297 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87535, - "mutability": "mutable", - "name": "operator", - "nameLocation": "13621:8:147", - "nodeType": "VariableDeclaration", - "scope": 87609, - "src": "13613:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119297, - "mutability": "mutable", - "name": "operator", - "nameLocation": "12617:8:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12609:16:163", ->>>>>>> Stashed changes -======= - "id": 119297, - "mutability": "mutable", - "name": "operator", - "nameLocation": "12617:8:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12609:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87534, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13613:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119296, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12609:7:163", ->>>>>>> Stashed changes -======= - "id": 119296, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12609:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 87538, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87538, -======= - "id": 119300, ->>>>>>> Stashed changes -======= - "id": 119300, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87536, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "13632:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 119298, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "12628:10:163", ->>>>>>> Stashed changes -======= - "id": 119298, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "12628:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 87537, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87537, -======= - "id": 119299, ->>>>>>> Stashed changes -======= - "id": 119299, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "13632:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13632:12:147", -======= - "src": "12628:12:163", ->>>>>>> Stashed changes -======= - "src": "12628:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13613:31:147" - }, - { - "assignments": [ - 87541 -<<<<<<< Updated upstream -======= -======= - "src": "12609:31:163" - }, - { - "assignments": [ - 119303 ->>>>>>> Stashed changes -======= - "src": "12609:31:163" - }, - { - "assignments": [ - 119303 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87541, - "mutability": "mutable", - "name": "renewalFee", - "nameLocation": "13668:10:147", - "nodeType": "VariableDeclaration", - "scope": 87609, - "src": "13650:28:147", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - }, - "typeName": { - "id": 87540, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87539, - "name": "RenewalFee", - "nameLocations": [ - "13650:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "13650:10:147" - }, - "referencedDeclaration": 91376, - "src": "13650:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119303, - "mutability": "mutable", - "name": "renewalFee", - "nameLocation": "12664:10:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12646:28:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - }, - "typeName": { - "id": 119302, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119301, - "name": "RenewalFee", - "nameLocations": [ - "12646:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "12646:10:163" - }, - "referencedDeclaration": 123317, - "src": "12646:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119303, - "mutability": "mutable", - "name": "renewalFee", - "nameLocation": "12664:10:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12646:28:163", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - }, - "typeName": { - "id": 119302, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119301, - "name": "RenewalFee", - "nameLocations": [ - "12646:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "12646:10:163" - }, - "referencedDeclaration": 123317, - "src": "12646:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87542, - "nodeType": "VariableDeclarationStatement", - "src": "13650:28:147" - }, - { - "assignments": [ - 87544 -<<<<<<< Updated upstream -======= -======= - "id": 119304, - "nodeType": "VariableDeclarationStatement", - "src": "12646:28:163" - }, - { - "assignments": [ - 119306 ->>>>>>> Stashed changes -======= - "id": 119304, - "nodeType": "VariableDeclarationStatement", - "src": "12646:28:163" - }, - { - "assignments": [ - 119306 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87544, - "mutability": "mutable", - "name": "length", - "nameLocation": "13692:6:147", - "nodeType": "VariableDeclaration", - "scope": 87609, - "src": "13684:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119306, - "mutability": "mutable", - "name": "length", - "nameLocation": "12688:6:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12680:14:163", ->>>>>>> Stashed changes -======= - "id": 119306, - "mutability": "mutable", - "name": "length", - "nameLocation": "12688:6:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12680:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87543, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13684:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119305, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12680:7:163", ->>>>>>> Stashed changes -======= - "id": 119305, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12680:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87547, - "initialValue": { - "expression": { - "id": 87545, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87531, - "src": "13701:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 87546, -<<<<<<< Updated upstream -======= -======= - "id": 119309, - "initialValue": { - "expression": { - "id": 119307, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119293, - "src": "12697:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 119308, ->>>>>>> Stashed changes -======= - "id": 119309, - "initialValue": { - "expression": { - "id": 119307, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119293, - "src": "12697:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 119308, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13713:6:147", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "13701:18:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12709:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12697:18:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12709:6:163", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "12697:18:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13684:35:147" - }, - { - "assignments": [ - 87549 -<<<<<<< Updated upstream -======= -======= - "src": "12680:35:163" - }, - { - "assignments": [ - 119311 ->>>>>>> Stashed changes -======= - "src": "12680:35:163" - }, - { - "assignments": [ - 119311 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87549, - "mutability": "mutable", - "name": "maxRenewalFeeLength", - "nameLocation": "13733:19:147", - "nodeType": "VariableDeclaration", - "scope": 87609, - "src": "13725:27:147", -<<<<<<< Updated upstream -======= -======= - "id": 119311, - "mutability": "mutable", - "name": "maxRenewalFeeLength", - "nameLocation": "12729:19:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12721:27:163", ->>>>>>> Stashed changes -======= - "id": 119311, - "mutability": "mutable", - "name": "maxRenewalFeeLength", - "nameLocation": "12729:19:163", - "nodeType": "VariableDeclaration", - "scope": 119371, - "src": "12721:27:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87548, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13725:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12721:7:163", ->>>>>>> Stashed changes -======= - "id": 119310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12721:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87551, - "initialValue": { - "id": 87550, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "13755:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 119313, - "initialValue": { - "id": 119312, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "12751:13:163", ->>>>>>> Stashed changes -======= - "id": 119313, - "initialValue": { - "id": 119312, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "12751:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13725:43:147" - }, - { - "body": { - "id": 87593, - "nodeType": "Block", - "src": "13804:308:147", - "statements": [ - { - "expression": { - "id": 87562, -<<<<<<< Updated upstream -======= -======= - "src": "12721:43:163" - }, - { - "body": { - "id": 119355, - "nodeType": "Block", - "src": "12800:308:163", - "statements": [ - { - "expression": { - "id": 119324, ->>>>>>> Stashed changes -======= - "src": "12721:43:163" - }, - { - "body": { - "id": 119355, - "nodeType": "Block", - "src": "12800:308:163", - "statements": [ - { - "expression": { - "id": 119324, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87558, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "13812:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119320, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12808:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", ->>>>>>> Stashed changes -======= - "id": 119320, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12808:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87559, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87531, - "src": "13825:11:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 87561, - "indexExpression": { - "id": 87560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87553, - "src": "13837:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 119321, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119293, - "src": "12821:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 119323, - "indexExpression": { - "id": 119322, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "12833:1:163", ->>>>>>> Stashed changes -======= - "id": 119321, - "name": "renewalFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119293, - "src": "12821:11:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" - } - }, - "id": 119323, - "indexExpression": { - "id": 119322, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "12833:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13825:14:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata" - } - }, - "src": "13812:27:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87563, - "nodeType": "ExpressionStatement", - "src": "13812:27:147" - }, - { - "expression": { - "id": 87571, -<<<<<<< Updated upstream -======= -======= - "src": "12821:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata" - } - }, - "src": "12808:27:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119325, - "nodeType": "ExpressionStatement", - "src": "12808:27:163" - }, - { - "expression": { - "id": 119333, ->>>>>>> Stashed changes -======= - "src": "12821:14:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_calldata_ptr", - "typeString": "struct INSDomainPrice.RenewalFee calldata" - } - }, - "src": "12808:27:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119325, - "nodeType": "ExpressionStatement", - "src": "12808:27:163" - }, - { - "expression": { - "id": 119333, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87564, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87549, - "src": "13847:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 119326, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "12843:19:163", ->>>>>>> Stashed changes -======= - "id": 119326, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "12843:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87567, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87549, - "src": "13878:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 119329, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "12874:19:163", ->>>>>>> Stashed changes -======= - "id": 119329, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "12874:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87568, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "13899:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87569, -<<<<<<< Updated upstream -======= -======= - "id": 119330, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12895:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119331, ->>>>>>> Stashed changes -======= - "id": 119330, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12895:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119331, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13910:11:147", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 91373, - "src": "13899:22:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12906:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "12895:22:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12906:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "12895:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87565, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73915, - "src": "13869:4:147", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$73915_$", - "typeString": "type(library Math)" - } - }, - "id": 87566, -<<<<<<< Updated upstream -======= -======= - "id": 119327, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "12865:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", - "typeString": "type(library Math)" - } - }, - "id": 119328, ->>>>>>> Stashed changes -======= - "id": 119327, - "name": "Math", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 104833, - "src": "12865:4:163", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", - "typeString": "type(library Math)" - } - }, - "id": 119328, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13874:3:147", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 73074, - "src": "13869:8:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12870:3:163", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 103992, - "src": "12865:8:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12870:3:163", - "memberName": "max", - "nodeType": "MemberAccess", - "referencedDeclaration": 103992, - "src": "12865:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87570, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87570, -======= - "id": 119332, ->>>>>>> Stashed changes -======= - "id": 119332, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "13869:53:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13869:53:147", -======= - "src": "12865:53:163", ->>>>>>> Stashed changes -======= - "src": "12865:53:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "13847:75:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13847:75:147", -======= - "src": "12843:75:163", ->>>>>>> Stashed changes -======= - "src": "12843:75:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87572, - "nodeType": "ExpressionStatement", - "src": "13847:75:147" - }, - { - "expression": { - "id": 87579, -<<<<<<< Updated upstream -======= -======= - "id": 119334, - "nodeType": "ExpressionStatement", - "src": "12843:75:163" - }, - { - "expression": { - "id": 119341, ->>>>>>> Stashed changes -======= - "id": 119334, - "nodeType": "ExpressionStatement", - "src": "12843:75:163" - }, - { - "expression": { - "id": 119341, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87573, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86414, - "src": "13930:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119335, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118329, - "src": "12926:6:163", ->>>>>>> Stashed changes -======= - "id": 119335, - "name": "_rnFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118329, - "src": "12926:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87576, - "indexExpression": { - "expression": { - "id": 87574, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "13937:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87575, -<<<<<<< Updated upstream -======= -======= - "id": 119338, - "indexExpression": { - "expression": { - "id": 119336, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12933:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119337, ->>>>>>> Stashed changes -======= - "id": 119338, - "indexExpression": { - "expression": { - "id": 119336, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12933:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119337, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13948:11:147", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 91373, - "src": "13937:22:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12944:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "12933:22:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12944:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "12933:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream - "src": "13930:30:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13930:30:147", -======= - "src": "12926:30:163", ->>>>>>> Stashed changes -======= - "src": "12926:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87577, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "13963:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87578, -<<<<<<< Updated upstream -======= -======= - "id": 119339, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12959:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119340, ->>>>>>> Stashed changes -======= - "id": 119339, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "12959:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119340, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "13974:3:147", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 91375, - "src": "13963:14:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "12970:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "12959:14:163", ->>>>>>> Stashed changes -======= - "memberLocation": "12970:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "12959:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "13930:47:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13930:47:147", -======= - "src": "12926:47:163", ->>>>>>> Stashed changes -======= - "src": "12926:47:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87580, - "nodeType": "ExpressionStatement", - "src": "13930:47:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87580, - "nodeType": "ExpressionStatement", - "src": "13930:47:147" -======= - "id": 119342, - "nodeType": "ExpressionStatement", - "src": "12926:47:163" ->>>>>>> Stashed changes -======= - "id": 119342, - "nodeType": "ExpressionStatement", - "src": "12926:47:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87582, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87535, - "src": "14016:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119344, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119297, - "src": "13012:8:163", ->>>>>>> Stashed changes -======= - "id": 119344, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119297, - "src": "13012:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87583, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "14026:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87584, -<<<<<<< Updated upstream -======= -======= - "id": 119345, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "13022:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119346, ->>>>>>> Stashed changes -======= - "id": 119345, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "13022:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119346, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "14037:11:147", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 91373, - "src": "14026:22:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "13033:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "13022:22:163", ->>>>>>> Stashed changes -======= - "memberLocation": "13033:11:163", - "memberName": "labelLength", - "nodeType": "MemberAccess", - "referencedDeclaration": 123314, - "src": "13022:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87585, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87541, - "src": "14050:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 87586, -<<<<<<< Updated upstream -======= -======= - "id": 119347, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "13046:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119348, ->>>>>>> Stashed changes -======= - "id": 119347, - "name": "renewalFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119303, - "src": "13046:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", - "typeString": "struct INSDomainPrice.RenewalFee memory" - } - }, - "id": 119348, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "14061:3:147", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 91375, - "src": "14050:14:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "13057:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "13046:14:163", ->>>>>>> Stashed changes -======= - "memberLocation": "13057:3:163", - "memberName": "fee", - "nodeType": "MemberAccess", - "referencedDeclaration": 123316, - "src": "13046:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87581, - "name": "RenewalFeeByLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91404, - "src": "13990:25:147", -<<<<<<< Updated upstream -======= -======= - "id": 119343, - "name": "RenewalFeeByLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123345, - "src": "12986:25:163", ->>>>>>> Stashed changes -======= - "id": 119343, - "name": "RenewalFeeByLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123345, - "src": "12986:25:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87587, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87587, -======= - "id": 119349, ->>>>>>> Stashed changes -======= - "id": 119349, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "13990:75:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13990:75:147", -======= - "src": "12986:75:163", ->>>>>>> Stashed changes -======= - "src": "12986:75:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87588, - "nodeType": "EmitStatement", - "src": "13985:80:147" - }, - { - "id": 87592, - "nodeType": "UncheckedBlock", - "src": "14074:32:147", - "statements": [ - { - "expression": { - "id": 87590, -<<<<<<< Updated upstream -======= -======= - "id": 119350, - "nodeType": "EmitStatement", - "src": "12981:80:163" - }, - { - "id": 119354, - "nodeType": "UncheckedBlock", - "src": "13070:32:163", - "statements": [ - { - "expression": { - "id": 119352, ->>>>>>> Stashed changes -======= - "id": 119350, - "nodeType": "EmitStatement", - "src": "12981:80:163" - }, - { - "id": 119354, - "nodeType": "UncheckedBlock", - "src": "13070:32:163", - "statements": [ - { - "expression": { - "id": 119352, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "14094:3:147", - "subExpression": { - "id": 87589, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87553, - "src": "14096:1:147", -<<<<<<< Updated upstream -======= -======= - "src": "13090:3:163", - "subExpression": { - "id": 119351, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "13092:1:163", ->>>>>>> Stashed changes -======= - "src": "13090:3:163", - "subExpression": { - "id": 119351, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "13092:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87591, - "nodeType": "ExpressionStatement", - "src": "14094:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87591, - "nodeType": "ExpressionStatement", - "src": "14094:3:147" -======= - "id": 119353, - "nodeType": "ExpressionStatement", - "src": "13090:3:163" ->>>>>>> Stashed changes -======= - "id": 119353, - "nodeType": "ExpressionStatement", - "src": "13090:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87557, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87557, -======= - "id": 119319, ->>>>>>> Stashed changes -======= - "id": 119319, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87555, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87553, - "src": "13791:1:147", -<<<<<<< Updated upstream -======= -======= - "id": 119317, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "12787:1:163", ->>>>>>> Stashed changes -======= - "id": 119317, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119315, - "src": "12787:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87556, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87544, - "src": "13795:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119318, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119306, - "src": "12791:6:163", ->>>>>>> Stashed changes -======= - "id": 119318, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119306, - "src": "12791:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "13791:10:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "13791:10:147", -======= - "src": "12787:10:163", ->>>>>>> Stashed changes -======= - "src": "12787:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87594, - "initializationExpression": { - "assignments": [ - 87553 -<<<<<<< Updated upstream -======= -======= - "id": 119356, - "initializationExpression": { - "assignments": [ - 119315 ->>>>>>> Stashed changes -======= - "id": 119356, - "initializationExpression": { - "assignments": [ - 119315 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87553, - "mutability": "mutable", - "name": "i", - "nameLocation": "13788:1:147", - "nodeType": "VariableDeclaration", - "scope": 87594, - "src": "13780:9:147", -<<<<<<< Updated upstream -======= -======= - "id": 119315, - "mutability": "mutable", - "name": "i", - "nameLocation": "12784:1:163", - "nodeType": "VariableDeclaration", - "scope": 119356, - "src": "12776:9:163", ->>>>>>> Stashed changes -======= - "id": 119315, - "mutability": "mutable", - "name": "i", - "nameLocation": "12784:1:163", - "nodeType": "VariableDeclaration", - "scope": 119356, - "src": "12776:9:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87552, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13780:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119314, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12776:7:163", ->>>>>>> Stashed changes -======= - "id": 119314, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12776:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87554, - "nodeType": "VariableDeclarationStatement", - "src": "13780:9:147" - }, - "nodeType": "ForStatement", - "src": "13775:337:147" -<<<<<<< Updated upstream -======= -======= - "id": 119316, - "nodeType": "VariableDeclarationStatement", - "src": "12776:9:163" - }, - "nodeType": "ForStatement", - "src": "12771:337:163" ->>>>>>> Stashed changes -======= - "id": 119316, - "nodeType": "VariableDeclarationStatement", - "src": "12776:9:163" - }, - "nodeType": "ForStatement", - "src": "12771:337:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87597, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87597, -======= - "id": 119359, ->>>>>>> Stashed changes -======= - "id": 119359, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87595, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87549, - "src": "14122:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 119357, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13118:19:163", ->>>>>>> Stashed changes -======= - "id": 119357, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13118:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87596, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "14145:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 119358, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "13141:13:163", ->>>>>>> Stashed changes -======= - "id": 119358, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "13141:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "14122:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14122:36:147", -======= - "src": "13118:36:163", ->>>>>>> Stashed changes -======= - "src": "13118:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87608, - "nodeType": "IfStatement", - "src": "14118:162:147", - "trueBody": { - "id": 87607, - "nodeType": "Block", - "src": "14160:120:147", - "statements": [ - { - "expression": { - "id": 87600, -<<<<<<< Updated upstream -======= -======= - "id": 119370, - "nodeType": "IfStatement", - "src": "13114:162:163", - "trueBody": { - "id": 119369, - "nodeType": "Block", - "src": "13156:120:163", - "statements": [ - { - "expression": { - "id": 119362, ->>>>>>> Stashed changes -======= - "id": 119370, - "nodeType": "IfStatement", - "src": "13114:162:163", - "trueBody": { - "id": 119369, - "nodeType": "Block", - "src": "13156:120:163", - "statements": [ - { - "expression": { - "id": 119362, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87598, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86399, - "src": "14168:13:147", -<<<<<<< Updated upstream -======= -======= - "id": 119360, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "13164:13:163", ->>>>>>> Stashed changes -======= - "id": 119360, - "name": "_rnfMaxLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118314, - "src": "13164:13:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87599, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87549, - "src": "14184:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 119361, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13180:19:163", ->>>>>>> Stashed changes -======= - "id": 119361, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13180:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "14168:35:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14168:35:147", -======= - "src": "13164:35:163", ->>>>>>> Stashed changes -======= - "src": "13164:35:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "id": 87601, - "nodeType": "ExpressionStatement", - "src": "14168:35:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87601, - "nodeType": "ExpressionStatement", - "src": "14168:35:147" -======= - "id": 119363, - "nodeType": "ExpressionStatement", - "src": "13164:35:163" ->>>>>>> Stashed changes -======= - "id": 119363, - "nodeType": "ExpressionStatement", - "src": "13164:35:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87603, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87535, - "src": "14243:8:147", -<<<<<<< Updated upstream -======= -======= - "id": 119365, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119297, - "src": "13239:8:163", ->>>>>>> Stashed changes -======= - "id": 119365, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119297, - "src": "13239:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87604, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87549, - "src": "14253:19:147", -<<<<<<< Updated upstream -======= -======= - "id": 119366, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13249:19:163", ->>>>>>> Stashed changes -======= - "id": 119366, - "name": "maxRenewalFeeLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119311, - "src": "13249:19:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87602, - "name": "MaxRenewalFeeLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91395, - "src": "14216:26:147", -<<<<<<< Updated upstream -======= -======= - "id": 119364, - "name": "MaxRenewalFeeLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123336, - "src": "13212:26:163", ->>>>>>> Stashed changes -======= - "id": 119364, - "name": "MaxRenewalFeeLengthUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123336, - "src": "13212:26:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, -<<<<<<< Updated upstream - "id": 87605, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87605, -======= - "id": 119367, ->>>>>>> Stashed changes -======= - "id": 119367, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "14216:57:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14216:57:147", -======= - "src": "13212:57:163", ->>>>>>> Stashed changes -======= - "src": "13212:57:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87606, - "nodeType": "EmitStatement", - "src": "14211:62:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87606, - "nodeType": "EmitStatement", - "src": "14211:62:147" -======= - "id": 119368, - "nodeType": "EmitStatement", - "src": "13207:62:163" ->>>>>>> Stashed changes -======= - "id": 119368, - "nodeType": "EmitStatement", - "src": "13207:62:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - } - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87527, - "nodeType": "StructuredDocumentation", - "src": "13377:150:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87527, - "nodeType": "StructuredDocumentation", - "src": "13377:150:147", -======= - "id": 119289, - "nodeType": "StructuredDocumentation", - "src": "12373:150:163", ->>>>>>> Stashed changes -======= - "id": 119289, - "nodeType": "StructuredDocumentation", - "src": "12373:150:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Sets renewal fee.\n Emits events {RenewalFeeByLengthUpdated}.\n Emits an event {MaxRenewalFeeLengthUpdated} optionally." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setRenewalFeeByLengths", -<<<<<<< Updated upstream - "nameLocation": "13539:23:147", - "parameters": { - "id": 87532, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "13539:23:147", - "parameters": { - "id": 87532, -======= - "nameLocation": "12535:23:163", - "parameters": { - "id": 119294, ->>>>>>> Stashed changes -======= - "nameLocation": "12535:23:163", - "parameters": { - "id": 119294, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87531, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "13585:11:147", - "nodeType": "VariableDeclaration", - "scope": 87610, - "src": "13563:33:147", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119293, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "12581:11:163", - "nodeType": "VariableDeclaration", - "scope": 119372, - "src": "12559:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes -======= - "id": 119293, - "mutability": "mutable", - "name": "renewalFees", - "nameLocation": "12581:11:163", - "nodeType": "VariableDeclaration", - "scope": 119372, - "src": "12559:33:163", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - }, - "typeName": { - "baseType": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87529, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87528, - "name": "RenewalFee", - "nameLocations": [ - "13563:10:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91376, - "src": "13563:10:147" - }, - "referencedDeclaration": 91376, - "src": "13563:10:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 87530, - "nodeType": "ArrayTypeName", - "src": "13563:12:147", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", -<<<<<<< Updated upstream -======= -======= - "id": 119291, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119290, - "name": "RenewalFee", - "nameLocations": [ - "12559:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "12559:10:163" - }, - "referencedDeclaration": 123317, - "src": "12559:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 119292, - "nodeType": "ArrayTypeName", - "src": "12559:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes -======= - "id": 119291, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119290, - "name": "RenewalFee", - "nameLocations": [ - "12559:10:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123317, - "src": "12559:10:163" - }, - "referencedDeclaration": 123317, - "src": "12559:10:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", - "typeString": "struct INSDomainPrice.RenewalFee" - } - }, - "id": 119292, - "nodeType": "ArrayTypeName", - "src": "12559:12:163", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "struct INSDomainPrice.RenewalFee[]" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "13562:35:147" - }, - "returnParameters": { - "id": 87533, - "nodeType": "ParameterList", - "parameters": [], - "src": "13607:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "12558:35:163" - }, - "returnParameters": { - "id": 119295, - "nodeType": "ParameterList", - "parameters": [], - "src": "12603:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "12558:35:163" - }, - "returnParameters": { - "id": 119295, - "nodeType": "ParameterList", - "parameters": [], - "src": "12603:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87642, - "nodeType": "FunctionDefinition", - "src": "14385:296:147", - "nodes": [], - "body": { - "id": 87641, - "nodeType": "Block", - "src": "14487:194:147", -<<<<<<< Updated upstream -======= -======= - "id": 119404, - "nodeType": "FunctionDefinition", - "src": "13381:296:163", - "nodes": [], - "body": { - "id": 119403, - "nodeType": "Block", - "src": "13483:194:163", ->>>>>>> Stashed changes -======= - "id": 119404, - "nodeType": "FunctionDefinition", - "src": "13381:296:163", - "nodes": [], - "body": { - "id": 119403, - "nodeType": "Block", - "src": "13483:194:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "expression": { -<<<<<<< Updated upstream - "id": 87623, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87623, -======= - "id": 119385, ->>>>>>> Stashed changes -======= - "id": 119385, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87621, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86389, - "src": "14493:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 119383, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "13489:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 119383, - "name": "_pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118304, - "src": "13489:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87622, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87614, - "src": "14501:4:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - } - }, - "src": "14493:12:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - } - }, - "id": 87624, - "nodeType": "ExpressionStatement", - "src": "14493:12:147" - }, - { - "expression": { - "id": 87627, -<<<<<<< Updated upstream -======= -======= - "id": 119384, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119376, - "src": "13497:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "src": "13489:12:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119386, - "nodeType": "ExpressionStatement", - "src": "13489:12:163" - }, - { - "expression": { - "id": 119389, ->>>>>>> Stashed changes -======= - "id": 119384, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119376, - "src": "13497:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "src": "13489:12:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - } - }, - "id": 119386, - "nodeType": "ExpressionStatement", - "src": "13489:12:163" - }, - { - "expression": { - "id": 119389, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87625, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86402, - "src": "14511:17:147", -<<<<<<< Updated upstream -======= -======= - "id": 119387, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "13507:17:163", ->>>>>>> Stashed changes -======= - "id": 119387, - "name": "_maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118317, - "src": "13507:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87626, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87616, - "src": "14531:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119388, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119378, - "src": "13527:16:163", ->>>>>>> Stashed changes -======= - "id": 119388, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119378, - "src": "13527:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "14511:36:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14511:36:147", -======= - "src": "13507:36:163", ->>>>>>> Stashed changes -======= - "src": "13507:36:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87628, - "nodeType": "ExpressionStatement", - "src": "14511:36:147" - }, - { - "expression": { - "id": 87631, -<<<<<<< Updated upstream -======= -======= - "id": 119390, - "nodeType": "ExpressionStatement", - "src": "13507:36:163" - }, - { - "expression": { - "id": 119393, ->>>>>>> Stashed changes -======= - "id": 119390, - "nodeType": "ExpressionStatement", - "src": "13507:36:163" - }, - { - "expression": { - "id": 119393, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87629, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86405, - "src": "14553:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119391, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "13549:16:163", ->>>>>>> Stashed changes -======= - "id": 119391, - "name": "_pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118320, - "src": "13549:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87630, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87618, - "src": "14572:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 119392, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119380, - "src": "13568:15:163", ->>>>>>> Stashed changes -======= - "id": 119392, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119380, - "src": "13568:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "src": "14553:34:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14553:34:147", -======= - "src": "13549:34:163", ->>>>>>> Stashed changes -======= - "src": "13549:34:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, -<<<<<<< Updated upstream - "id": 87632, - "nodeType": "ExpressionStatement", - "src": "14553:34:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87632, - "nodeType": "ExpressionStatement", - "src": "14553:34:147" -======= - "id": 119394, - "nodeType": "ExpressionStatement", - "src": "13549:34:163" ->>>>>>> Stashed changes -======= - "id": 119394, - "nodeType": "ExpressionStatement", - "src": "13549:34:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87634, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72664, - "src": "14622:10:147", -<<<<<<< Updated upstream -======= -======= - "id": 119396, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "13618:10:163", ->>>>>>> Stashed changes -======= - "id": 119396, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103582, - "src": "13618:10:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, -<<<<<<< Updated upstream - "id": 87635, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87635, -======= - "id": 119397, ->>>>>>> Stashed changes -======= - "id": 119397, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "14622:12:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14622:12:147", -======= - "src": "13618:12:163", ->>>>>>> Stashed changes -======= - "src": "13618:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87636, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87614, - "src": "14636:4:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 119398, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119376, - "src": "13632:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 119398, - "name": "pyth", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119376, - "src": "13632:4:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87637, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87616, - "src": "14642:16:147", -<<<<<<< Updated upstream -======= -======= - "id": 119399, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119378, - "src": "13638:16:163", ->>>>>>> Stashed changes -======= - "id": 119399, - "name": "maxAcceptableAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119378, - "src": "13638:16:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87638, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87618, - "src": "14660:15:147", -<<<<<<< Updated upstream -======= -======= - "id": 119400, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119380, - "src": "13656:15:163", ->>>>>>> Stashed changes -======= - "id": 119400, - "name": "pythIdForRONUSD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119380, - "src": "13656:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "typeIdentifier": "t_contract$_IPyth_$75202", -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87633, - "name": "PythOracleConfigUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 91456, - "src": "14598:23:147", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$75202_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (address,contract IPyth,uint256,bytes32)" - } - }, - "id": 87639, -<<<<<<< Updated upstream -======= -======= - "id": 119395, - "name": "PythOracleConfigUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123398, - "src": "13594:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (address,contract IPyth,uint256,bytes32)" - } - }, - "id": 119401, ->>>>>>> Stashed changes -======= - "id": 119395, - "name": "PythOracleConfigUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123398, - "src": "13594:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", - "typeString": "function (address,contract IPyth,uint256,bytes32)" - } - }, - "id": 119401, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "14598:78:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14598:78:147", -======= - "src": "13594:78:163", ->>>>>>> Stashed changes -======= - "src": "13594:78:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, -<<<<<<< Updated upstream - "id": 87640, - "nodeType": "EmitStatement", - "src": "14593:83:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87640, - "nodeType": "EmitStatement", - "src": "14593:83:147" -======= - "id": 119402, - "nodeType": "EmitStatement", - "src": "13589:83:163" ->>>>>>> Stashed changes -======= - "id": 119402, - "nodeType": "EmitStatement", - "src": "13589:83:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87611, - "nodeType": "StructuredDocumentation", - "src": "14288:94:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87611, - "nodeType": "StructuredDocumentation", - "src": "14288:94:147", -======= - "id": 119373, - "nodeType": "StructuredDocumentation", - "src": "13284:94:163", ->>>>>>> Stashed changes -======= - "id": 119373, - "nodeType": "StructuredDocumentation", - "src": "13284:94:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Sets Pyth Oracle config.\n Emits events {PythOracleConfigUpdated}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setPythOracleConfig", -<<<<<<< Updated upstream - "nameLocation": "14394:20:147", - "parameters": { - "id": 87619, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "14394:20:147", - "parameters": { - "id": 87619, -======= - "nameLocation": "13390:20:163", - "parameters": { - "id": 119381, ->>>>>>> Stashed changes -======= - "nameLocation": "13390:20:163", - "parameters": { - "id": 119381, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87614, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "14421:4:147", - "nodeType": "VariableDeclaration", - "scope": 87642, - "src": "14415:10:147", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 87613, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87612, - "name": "IPyth", - "nameLocations": [ - "14415:5:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 75202, - "src": "14415:5:147" - }, - "referencedDeclaration": 75202, - "src": "14415:5:147", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$75202", -<<<<<<< Updated upstream -======= -======= - "id": 119376, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "13417:4:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13411:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 119375, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119374, - "name": "IPyth", - "nameLocations": [ - "13411:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "13411:5:163" - }, - "referencedDeclaration": 106120, - "src": "13411:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes -======= - "id": 119376, - "mutability": "mutable", - "name": "pyth", - "nameLocation": "13417:4:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13411:10:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", - "typeString": "contract IPyth" - }, - "typeName": { - "id": 119375, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119374, - "name": "IPyth", - "nameLocations": [ - "13411:5:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 106120, - "src": "13411:5:163" - }, - "referencedDeclaration": 106120, - "src": "13411:5:163", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPyth_$106120", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeString": "contract IPyth" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87616, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "14435:16:147", - "nodeType": "VariableDeclaration", - "scope": 87642, - "src": "14427:24:147", -<<<<<<< Updated upstream -======= -======= - "id": 119378, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "13431:16:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13423:24:163", ->>>>>>> Stashed changes -======= - "id": 119378, - "mutability": "mutable", - "name": "maxAcceptableAge", - "nameLocation": "13431:16:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13423:24:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87615, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14427:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119377, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13423:7:163", ->>>>>>> Stashed changes -======= - "id": 119377, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13423:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87618, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "14461:15:147", - "nodeType": "VariableDeclaration", - "scope": 87642, - "src": "14453:23:147", -<<<<<<< Updated upstream -======= -======= - "id": 119380, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "13457:15:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13449:23:163", ->>>>>>> Stashed changes -======= - "id": 119380, - "mutability": "mutable", - "name": "pythIdForRONUSD", - "nameLocation": "13457:15:163", - "nodeType": "VariableDeclaration", - "scope": 119404, - "src": "13449:23:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87617, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14453:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119379, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13449:7:163", ->>>>>>> Stashed changes -======= - "id": 119379, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13449:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "14414:63:147" - }, - "returnParameters": { - "id": 87620, - "nodeType": "ParameterList", - "parameters": [], - "src": "14487:0:147" - }, - "scope": 87685, -<<<<<<< Updated upstream -======= -======= - "src": "13410:63:163" - }, - "returnParameters": { - "id": 119382, - "nodeType": "ParameterList", - "parameters": [], - "src": "13483:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "13410:63:163" - }, - "returnParameters": { - "id": 119382, - "nodeType": "ParameterList", - "parameters": [], - "src": "13483:0:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87684, - "nodeType": "FunctionDefinition", - "src": "14794:361:147", - "nodes": [], - "body": { - "id": 87683, - "nodeType": "Block", - "src": "14867:288:147", -<<<<<<< Updated upstream -======= -======= - "id": 119583, - "nodeType": "FunctionDefinition", - "src": "14186:1419:163", - "nodes": [], - "body": { - "id": 119582, - "nodeType": "Block", - "src": "14360:1245:163", ->>>>>>> Stashed changes -======= - "id": 119583, - "nodeType": "FunctionDefinition", - "src": "14186:1419:163", - "nodes": [], - "body": { - "id": 119582, - "nodeType": "Block", - "src": "14360:1245:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodes": [], - "statements": [ - { - "assignments": [ -<<<<<<< Updated upstream - 87652 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87652 -======= - 119421 ->>>>>>> Stashed changes -======= - 119421 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87652, - "mutability": "mutable", - "name": "dp", - "nameLocation": "14898:2:147", - "nodeType": "VariableDeclaration", - "scope": 87683, - "src": "14873:27:147", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 87651, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 87650, - "name": "TimestampWrapper", - "nameLocations": [ - "14873:16:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 93585, - "src": "14873:16:147" - }, - "referencedDeclaration": 93585, - "src": "14873:16:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper" -<<<<<<< Updated upstream -======= -======= - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 119420, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14366:7:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" ->>>>>>> Stashed changes -======= - "id": 119421, - "mutability": "mutable", - "name": "nameLen", - "nameLocation": "14374:7:163", - "nodeType": "VariableDeclaration", - "scope": 119582, - "src": "14366:15:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 119420, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14366:7:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87656, - "initialValue": { - "baseExpression": { - "id": 87653, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86420, - "src": "14903:3:147", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$93585_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 87655, - "indexExpression": { - "id": 87654, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87645, - "src": "14907:6:147", -<<<<<<< Updated upstream -======= -======= - "id": 119425, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 119422, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119407, - "src": "14384:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 119423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14390:6:163", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 125159, - "src": "14384:12:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 119424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14384:14:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14366:32:163" - }, - { - "assignments": [ - 119427 - ], - "declarations": [ - { - "constant": false, - "id": 119427, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "14412:6:163", - "nodeType": "VariableDeclaration", - "scope": 119582, - "src": "14404:14:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 119426, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14404:7:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 119431, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 119428, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119407, - "src": "14421:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 119429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14427:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "14421:15:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 119430, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14421:17:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14404:34:163" - }, - { - "assignments": [ - 119433 - ], - "declarations": [ - { - "constant": false, - "id": 119433, - "mutability": "mutable", - "name": "overriddenRenewalFee", - "nameLocation": "14452:20:163", - "nodeType": "VariableDeclaration", - "scope": 119582, - "src": "14444:28:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 119432, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14444:7:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 119437, - "initialValue": { - "baseExpression": { - "id": 119434, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "14475:16:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 119436, - "indexExpression": { - "id": 119435, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119427, - "src": "14492:6:163", ->>>>>>> Stashed changes -======= - "id": 119425, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 119422, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119407, - "src": "14384:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 119423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14390:6:163", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 125159, - "src": "14384:12:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 119424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14384:14:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14366:32:163" - }, - { - "assignments": [ - 119427 - ], - "declarations": [ - { - "constant": false, - "id": 119427, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "14412:6:163", - "nodeType": "VariableDeclaration", - "scope": 119582, - "src": "14404:14:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 119426, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14404:7:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 119431, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 119428, - "name": "label", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119407, - "src": "14421:5:163", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 119429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14427:9:163", - "memberName": "hashLabel", - "nodeType": "MemberAccess", - "referencedDeclaration": 125041, - "src": "14421:15:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (bytes32)" - } - }, - "id": 119430, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14421:17:163", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14404:34:163" - }, - { - "assignments": [ - 119433 - ], - "declarations": [ - { - "constant": false, - "id": 119433, - "mutability": "mutable", - "name": "overriddenRenewalFee", - "nameLocation": "14452:20:163", - "nodeType": "VariableDeclaration", - "scope": 119582, - "src": "14444:28:163", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 119432, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14444:7:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 119437, - "initialValue": { - "baseExpression": { - "id": 119434, - "name": "_rnFeeOverriding", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118340, - "src": "14475:16:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 119436, - "indexExpression": { - "id": 119435, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119427, - "src": "14492:6:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "14903:11:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage", - "typeString": "struct TimestampWrapper storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14873:41:147" -<<<<<<< Updated upstream -======= -======= - "src": "14475:24:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14444:55:163" ->>>>>>> Stashed changes -======= - "src": "14475:24:163", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14444:55:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "assignments": [ -<<<<<<< Updated upstream - 87658 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87658 -======= - 119593 ->>>>>>> Stashed changes -======= - 119593 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87658, - "mutability": "mutable", - "name": "lastSyncedAt", - "nameLocation": "14928:12:147", - "nodeType": "VariableDeclaration", - "scope": 87683, - "src": "14920:20:147", -<<<<<<< Updated upstream -======= -======= - "id": 119593, - "mutability": "mutable", - "name": "dp", - "nameLocation": "15822:2:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15797:27:163", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 119592, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119591, - "name": "TimestampWrapper", - "nameLocations": [ - "15797:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "15797:16:163" - }, - "referencedDeclaration": 125530, - "src": "15797:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - } - }, - "visibility": "internal" - } - ], - "id": 119597, - "initialValue": { - "baseExpression": { - "id": 119594, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118335, - "src": "15827:3:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 119596, - "indexExpression": { - "id": 119595, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119586, - "src": "15831:6:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "15827:11:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", - "typeString": "struct TimestampWrapper storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15797:41:163" - }, - { - "assignments": [ - 119599 - ], - "declarations": [ - { - "constant": false, - "id": 119599, - "mutability": "mutable", - "name": "lastSyncedAt", - "nameLocation": "15852:12:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15844:20:163", ->>>>>>> Stashed changes -======= - "id": 119593, - "mutability": "mutable", - "name": "dp", - "nameLocation": "15822:2:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15797:27:163", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - }, - "typeName": { - "id": 119592, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 119591, - "name": "TimestampWrapper", - "nameLocations": [ - "15797:16:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 125530, - "src": "15797:16:163" - }, - "referencedDeclaration": 125530, - "src": "15797:16:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper" - } - }, - "visibility": "internal" - } - ], - "id": 119597, - "initialValue": { - "baseExpression": { - "id": 119594, - "name": "_dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118335, - "src": "15827:3:163", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", - "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" - } - }, - "id": 119596, - "indexExpression": { - "id": 119595, - "name": "lbHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119586, - "src": "15831:6:163", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "15827:11:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", - "typeString": "struct TimestampWrapper storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15797:41:163" - }, - { - "assignments": [ - 119599 - ], - "declarations": [ - { - "constant": false, - "id": 119599, - "mutability": "mutable", - "name": "lastSyncedAt", - "nameLocation": "15852:12:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15844:20:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87657, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14920:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119598, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15844:7:163", ->>>>>>> Stashed changes -======= - "id": 119598, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15844:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87661, - "initialValue": { - "expression": { - "id": 87659, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87652, - "src": "14943:2:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 87660, -<<<<<<< Updated upstream -======= -======= - "id": 119602, - "initialValue": { - "expression": { - "id": 119600, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119593, - "src": "15867:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119601, ->>>>>>> Stashed changes -======= - "id": 119602, - "initialValue": { - "expression": { - "id": 119600, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119593, - "src": "15867:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119601, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "14946:9:147", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 93584, - "src": "14943:12:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "15870:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 125529, - "src": "15867:12:163", ->>>>>>> Stashed changes -======= - "memberLocation": "15870:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 125529, - "src": "15867:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream - "src": "14920:35:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14920:35:147" -======= - "src": "15844:35:163" ->>>>>>> Stashed changes -======= - "src": "15844:35:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87664, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87664, -======= - "id": 119605, ->>>>>>> Stashed changes -======= - "id": 119605, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87662, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87658, - "src": "14965:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 119603, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119599, - "src": "15889:12:163", ->>>>>>> Stashed changes -======= - "id": 119603, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119599, - "src": "15889:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", -<<<<<<< Updated upstream - "id": 87663, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87663, -======= - "id": 119604, ->>>>>>> Stashed changes -======= - "id": 119604, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "14981:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14981:1:147", -======= - "src": "15905:1:163", ->>>>>>> Stashed changes -======= - "src": "15905:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream - "src": "14965:17:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14965:17:147", -======= - "src": "15889:17:163", ->>>>>>> Stashed changes -======= - "src": "15889:17:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87667, - "nodeType": "IfStatement", - "src": "14961:31:147", - "trueBody": { - "expression": { - "hexValue": "30", - "id": 87665, -<<<<<<< Updated upstream -======= -======= - "id": 119608, - "nodeType": "IfStatement", - "src": "15885:31:163", - "trueBody": { - "expression": { - "hexValue": "30", - "id": 119606, ->>>>>>> Stashed changes -======= - "id": 119608, - "nodeType": "IfStatement", - "src": "15885:31:163", - "trueBody": { - "expression": { - "hexValue": "30", - "id": 119606, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", -<<<<<<< Updated upstream - "src": "14991:1:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14991:1:147", -======= - "src": "15915:1:163", ->>>>>>> Stashed changes -======= - "src": "15915:1:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 87649, - "id": 87666, - "nodeType": "Return", - "src": "14984:8:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 119590, - "id": 119607, - "nodeType": "Return", - "src": "15908:8:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 119590, - "id": 119607, - "nodeType": "Return", - "src": "15908:8:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - }, - { - "assignments": [ -<<<<<<< Updated upstream - 87669 -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - 87669 -======= - 119610 ->>>>>>> Stashed changes -======= - 119610 ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "declarations": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87669, - "mutability": "mutable", - "name": "passedDuration", - "nameLocation": "15007:14:147", - "nodeType": "VariableDeclaration", - "scope": 87683, - "src": "14999:22:147", -<<<<<<< Updated upstream -======= -======= - "id": 119610, - "mutability": "mutable", - "name": "passedDuration", - "nameLocation": "15931:14:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15923:22:163", ->>>>>>> Stashed changes -======= - "id": 119610, - "mutability": "mutable", - "name": "passedDuration", - "nameLocation": "15931:14:163", - "nodeType": "VariableDeclaration", - "scope": 119624, - "src": "15923:22:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14999:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15923:7:163", ->>>>>>> Stashed changes -======= - "id": 119609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15923:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "id": 87674, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87674, -======= - "id": 119615, ->>>>>>> Stashed changes -======= - "id": 119615, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, -<<<<<<< Updated upstream - "id": 87673, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87673, -======= - "id": 119614, ->>>>>>> Stashed changes -======= - "id": 119614, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { -<<<<<<< Updated upstream - "id": 87670, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87670, -======= - "id": 119611, ->>>>>>> Stashed changes -======= - "id": 119611, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, -<<<<<<< Updated upstream - "src": "15024:5:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "15024:5:147", -======= - "src": "15948:5:163", ->>>>>>> Stashed changes -======= - "src": "15948:5:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, -<<<<<<< Updated upstream - "id": 87671, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87671, -======= - "id": 119612, ->>>>>>> Stashed changes -======= - "id": 119612, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "15030:9:147", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "15024:15:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "15954:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "15948:15:163", ->>>>>>> Stashed changes -======= - "memberLocation": "15954:9:163", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "15948:15:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87672, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87658, - "src": "15042:12:147", -<<<<<<< Updated upstream -======= -======= - "id": 119613, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119599, - "src": "15966:12:163", ->>>>>>> Stashed changes -======= - "id": 119613, - "name": "lastSyncedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119599, - "src": "15966:12:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream - "src": "15024:30:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "15024:30:147", -======= - "src": "15948:30:163", ->>>>>>> Stashed changes -======= - "src": "15948:30:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", -<<<<<<< Updated upstream - "src": "14999:55:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14999:55:147" -======= - "src": "15923:55:163" ->>>>>>> Stashed changes -======= - "src": "15923:55:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - }, - { - "expression": { - "arguments": [ - { - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87677, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87652, - "src": "15096:2:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 87678, -<<<<<<< Updated upstream -======= -======= - "id": 119618, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119593, - "src": "16020:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119619, ->>>>>>> Stashed changes -======= - "id": 119618, - "name": "dp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119593, - "src": "16020:2:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", - "typeString": "struct TimestampWrapper storage pointer" - } - }, - "id": 119619, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "15099:5:147", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 93582, - "src": "15096:8:147", -<<<<<<< Updated upstream -======= -======= - "memberLocation": "16023:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "16020:8:163", ->>>>>>> Stashed changes -======= - "memberLocation": "16023:5:163", - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 125527, - "src": "16020:8:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87679, - "name": "MAX_PERCENTAGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86368, - "src": "15112:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119620, - "name": "MAX_PERCENTAGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118283, - "src": "16036:14:163", ->>>>>>> Stashed changes -======= - "id": 119620, - "name": "MAX_PERCENTAGE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118283, - "src": "16036:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87680, - "name": "passedDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87669, - "src": "15133:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119621, - "name": "passedDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119610, - "src": "16057:14:163", ->>>>>>> Stashed changes -======= - "id": 119621, - "name": "passedDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 119610, - "src": "16057:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87675, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 86409, - "src": "15067:13:147", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 87676, -<<<<<<< Updated upstream -======= -======= - "id": 119616, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "15991:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 119617, ->>>>>>> Stashed changes -======= - "id": 119616, - "name": "_dpDownScaler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 118324, - "src": "15991:13:163", - "typeDescriptions": { - "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", - "typeString": "struct PeriodScaler storage ref" - } - }, - "id": 119617, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "memberLocation": "15081:9:147", - "memberName": "scaleDown", - "nodeType": "MemberAccess", - "referencedDeclaration": 93752, - "src": "15067:23:147", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$93662_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$93662_memory_ptr_$", - "typeString": "function (struct PeriodScaler memory,uint256,uint64,uint256) pure returns (uint256)" - } - }, - "id": 87681, -<<<<<<< Updated upstream -======= -======= - "memberLocation": "16005:9:163", - "memberName": "scaleDown", - "nodeType": "MemberAccess", - "referencedDeclaration": 125697, - "src": "15991:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$125607_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$125607_memory_ptr_$", - "typeString": "function (struct PeriodScaler memory,uint256,uint64,uint256) pure returns (uint256)" - } - }, - "id": 119622, ->>>>>>> Stashed changes -======= - "memberLocation": "16005:9:163", - "memberName": "scaleDown", - "nodeType": "MemberAccess", - "referencedDeclaration": 125697, - "src": "15991:23:163", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$125607_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$125607_memory_ptr_$", - "typeString": "function (struct PeriodScaler memory,uint256,uint64,uint256) pure returns (uint256)" - } - }, - "id": 119622, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ -<<<<<<< Updated upstream - "15093:1:147", - "15106:4:147", - "15128:3:147" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "15093:1:147", - "15106:4:147", - "15128:3:147" -======= - "16017:1:163", - "16030:4:163", - "16052:3:163" ->>>>>>> Stashed changes -======= - "16017:1:163", - "16030:4:163", - "16052:3:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ], - "names": [ - "v", - "maxR", - "dur" - ], - "nodeType": "FunctionCall", -<<<<<<< Updated upstream - "src": "15067:83:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "15067:83:147", -======= - "src": "15991:83:163", ->>>>>>> Stashed changes -======= - "src": "15991:83:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "functionReturnParameters": 87649, - "id": 87682, - "nodeType": "Return", - "src": "15060:90:147" -<<<<<<< Updated upstream -======= -======= - "functionReturnParameters": 119590, - "id": 119623, - "nodeType": "Return", - "src": "15984:90:163" ->>>>>>> Stashed changes -======= - "functionReturnParameters": 119590, - "id": 119623, - "nodeType": "Return", - "src": "15984:90:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ] - }, - "documentation": { -<<<<<<< Updated upstream - "id": 87643, - "nodeType": "StructuredDocumentation", - "src": "14685:106:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87643, - "nodeType": "StructuredDocumentation", - "src": "14685:106:147", -======= - "id": 119584, - "nodeType": "StructuredDocumentation", - "src": "15609:106:163", ->>>>>>> Stashed changes -======= - "id": 119584, - "nodeType": "StructuredDocumentation", - "src": "15609:106:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "text": " @dev Returns the current domain price applied the business rule: deduced x% each y seconds." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getDomainPrice", -<<<<<<< Updated upstream - "nameLocation": "14803:15:147", - "parameters": { - "id": 87646, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "nameLocation": "14803:15:147", - "parameters": { - "id": 87646, -======= - "nameLocation": "15727:15:163", - "parameters": { - "id": 119587, ->>>>>>> Stashed changes -======= - "nameLocation": "15727:15:163", - "parameters": { - "id": 119587, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87645, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "14827:6:147", - "nodeType": "VariableDeclaration", - "scope": 87684, - "src": "14819:14:147", -<<<<<<< Updated upstream -======= -======= - "id": 119586, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "15751:6:163", - "nodeType": "VariableDeclaration", - "scope": 119625, - "src": "15743:14:163", ->>>>>>> Stashed changes -======= - "id": 119586, - "mutability": "mutable", - "name": "lbHash", - "nameLocation": "15751:6:163", - "nodeType": "VariableDeclaration", - "scope": 119625, - "src": "15743:14:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87644, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14819:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119585, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "15743:7:163", ->>>>>>> Stashed changes -======= - "id": 119585, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "15743:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "src": "14818:16:147" - }, - "returnParameters": { - "id": 87649, -<<<<<<< Updated upstream -======= -======= - "src": "15742:16:163" - }, - "returnParameters": { - "id": 119590, ->>>>>>> Stashed changes -======= - "src": "15742:16:163" - }, - "returnParameters": { - "id": 119590, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, -<<<<<<< Updated upstream - "id": 87648, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "id": 87648, -======= - "id": 119589, ->>>>>>> Stashed changes -======= - "id": 119589, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", -<<<<<<< Updated upstream - "scope": 87684, - "src": "14858:7:147", -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "scope": 87684, - "src": "14858:7:147", -======= - "scope": 119625, - "src": "15782:7:163", ->>>>>>> Stashed changes -======= - "scope": 119625, - "src": "15782:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 87647, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14858:7:147", -<<<<<<< Updated upstream -======= -======= - "id": 119588, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15782:7:163", ->>>>>>> Stashed changes -======= - "id": 119588, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15782:7:163", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], -<<<<<<< Updated upstream - "src": "14857:9:147" - }, - "scope": 87685, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "src": "14857:9:147" - }, - "scope": 87685, -======= - "src": "15781:9:163" - }, - "scope": 119626, ->>>>>>> Stashed changes -======= - "src": "15781:9:163" - }, - "scope": 119626, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "id": 86334, - "name": "Initializable", - "nameLocations": [ - "1005:13:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 70606, - "src": "1005:13:147" - }, - "id": 86335, - "nodeType": "InheritanceSpecifier", - "src": "1005:13:147" - }, - { - "baseName": { - "id": 86336, - "name": "AccessControlEnumerable", - "nameLocations": [ - "1020:23:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 69333, - "src": "1020:23:147" - }, - "id": 86337, - "nodeType": "InheritanceSpecifier", - "src": "1020:23:147" - }, - { - "baseName": { - "id": 86338, - "name": "INSDomainPrice", - "nameLocations": [ - "1045:14:147" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 91664, - "src": "1045:14:147" - }, - "id": 86339, - "nodeType": "InheritanceSpecifier", - "src": "1045:14:147" -<<<<<<< Updated upstream -======= -======= - "id": 118249, - "name": "Initializable", - "nameLocations": [ - "1005:13:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 101524, - "src": "1005:13:163" - }, - "id": 118250, - "nodeType": "InheritanceSpecifier", - "src": "1005:13:163" - }, - { - "baseName": { - "id": 118251, - "name": "AccessControlEnumerable", - "nameLocations": [ - "1020:23:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 100251, - "src": "1020:23:163" - }, - "id": 118252, - "nodeType": "InheritanceSpecifier", - "src": "1020:23:163" - }, - { - "baseName": { - "id": 118253, - "name": "INSDomainPrice", - "nameLocations": [ - "1045:14:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123609, - "src": "1045:14:163" - }, - "id": 118254, - "nodeType": "InheritanceSpecifier", - "src": "1045:14:163" ->>>>>>> Stashed changes -======= - "id": 118249, - "name": "Initializable", - "nameLocations": [ - "1005:13:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 101524, - "src": "1005:13:163" - }, - "id": 118250, - "nodeType": "InheritanceSpecifier", - "src": "1005:13:163" - }, - { - "baseName": { - "id": 118251, - "name": "AccessControlEnumerable", - "nameLocations": [ - "1020:23:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 100251, - "src": "1020:23:163" - }, - "id": 118252, - "nodeType": "InheritanceSpecifier", - "src": "1020:23:163" - }, - { - "baseName": { - "id": 118253, - "name": "INSDomainPrice", - "nameLocations": [ - "1045:14:163" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 123609, - "src": "1045:14:163" - }, - "id": 118254, - "nodeType": "InheritanceSpecifier", - "src": "1045:14:163" ->>>>>>> Stashed changes ->>>>>>> Stashed changes - } - ], - "canonicalName": "RNSDomainPrice", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - 87685, - 91664, - 69333, - 69208, - 73037, - 73049, - 69431, - 69406, - 72674, - 70606 - ], - "name": "RNSDomainPrice", - "nameLocation": "987:14:147", - "scope": 87686, - "usedErrors": [ - 91359, - 91361, - 91363, - 91365, - 93669, - 94284, - 94292 - ], - "usedEvents": [ - 69345, - 69354, - 69363, - 70452, - 91388, - 91395, - 91404, - 91413, - 91422, - 91435, - 91444, - 91456 -<<<<<<< Updated upstream -======= -======= - 119626, - 123609, - 100251, - 100126, - 103955, - 103967, - 100349, - 100324, - 103592, - 101524 - ], - "name": "RNSDomainPrice", - "nameLocation": "987:14:163", - "scope": 119627, - "usedErrors": [ - 123300, - 123302, - 123304, - 123306, - 125614, - 126229, - 126237 - ], - "usedEvents": [ -======= - 119626, - 123609, - 100251, - 100126, - 103955, - 103967, - 100349, - 100324, - 103592, - 101524 - ], - "name": "RNSDomainPrice", - "nameLocation": "987:14:163", - "scope": 119627, - "usedErrors": [ - 123300, - 123302, - 123304, - 123306, - 125614, - 126229, - 126237 - ], - "usedEvents": [ ->>>>>>> Stashed changes - 100263, - 100272, - 100281, - 101370, - 123329, - 123336, - 123345, - 123354, - 123364, - 123377, - 123386, - 123398 -<<<<<<< Updated upstream ->>>>>>> Stashed changes -======= ->>>>>>> Stashed changes ->>>>>>> Stashed changes - ] - } - ], - "license": "MIT" - }, -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "blockNumber": 24931477, - "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6133f880620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063700213c81161011a578063cff8372f116100ad578063dfef64da1161007c578063dfef64da146104e7578063e229a670146104fa578063f4651f491461050d578063f5b541a61461052e578063fe303ebf1461055557600080fd5b8063cff8372f1461049b578063d40ed58c146104ae578063d547741f146104c1578063dd28776d146104d457600080fd5b80639010d07c116100e95780639010d07c1461044257806391d148541461046d578063a217fddf14610480578063ca15c8731461048857600080fd5b8063700213c8146103df578063713a69a7146103f45780637174026e1461041c5780637e32146a1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf90914610391578063599eaabf146103b15780635c68c830146103c45780635ef32e2c146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046125de565b610568565b60405190151581526020015b60405180910390f35b61023b610236366004612608565b610593565b60405190815260200161021f565b610251610625565b60405161021f9190612621565b61023b61026c366004612608565b6000908152600160208190526040909120015490565b610295610290366004612698565b610702565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d33660046126cd565b61071e565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612741565b610749565b6102956103133660046126cd565b61075e565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f3660046127c6565b6107e1565b60405161021f9190612889565b6102956103bf3660046127c6565b61091a565b61023b6103d23660046128cf565b6109d8565b60375461023b565b61023b6000805160206133a383398151915281565b610407610402366004612a6f565b610a56565b6040805192835260208301919091520161021f565b61023b61042a366004612608565b610a82565b61023b61043d3660046128cf565b610b15565b610455610450366004612aa3565b610b8c565b6040516001600160a01b03909116815260200161021f565b61021361047b3660046126cd565b610bab565b61023b600081565b61023b610496366004612608565b610bd6565b6102956104a9366004612ac5565b610bed565b6102956104bc366004612b48565b610ced565b6102956104cf3660046126cd565b610eb5565b6102956104e2366004612ac5565b610edb565b61023b6104f5366004612a6f565b610fdc565b610295610508366004612c21565b6110c8565b61052061051b366004612c3d565b6110dc565b60405161021f929190612c81565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b610295610563366004612608565b611492565b60006001600160e01b03198216635a05180f60e01b148061058d575061058d826114a6565b92915050565b603554603a5460395460405163052571af60e51b815260009361058d93869360129384936001600160a01b03169263a4ae35e0926105dc92600401918252602082015260400190565b608060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190612cbc565b9291906114db565b603854606090806001600160401b0381111561064357610643612940565b60405190808252806020026020018201604052801561068857816020015b60408051808201909152600080825260208201528152602001906001900390816106615790505b5091506000805b828110156106fc57806001019150818482815181106106b0576106b0612d29565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106e6576106e6612d29565b602090810291909101810151015260010161068f565b50505090565b600061070d8161151c565b610718848484611529565b50505050565b6000828152600160208190526040909120015461073a8161151c565b610744838361159b565b505050565b60006107548161151c565b61074483836115bd565b6001600160a01b03811633146107d35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107dd82826116d6565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961080d8161151c565b600061081f8b8b8b8b8b8b8b8b6116f8565b905033816001600160401b0381111561083a5761083a612940565b604051908082528060200260200182016040528015610863578160200160208202803683370190505b50935060005b8281101561090a576108e0828e8e8481811061088757610887612d29565b905060200201358d8d858181106108a0576108a0612d29565b905060200201358c8c868181106108b9576108b9612d29565b905060200201358b8b878181106108d2576108d2612d29565b905060200201356000611746565b8582815181106108f2576108f2612d29565b91151560209283029190910190910152600101610869565b5050505098975050505050505050565b6000805160206133a38339815191526109328161151c565b60006109448a8a8a8a8a8a8a8a6116f8565b90503360005b828110156109ca576109c1828d8d8481811061096857610968612d29565b905060200201358c8c8581811061098157610981612d29565b905060200201358b8b8681811061099a5761099a612d29565b905060200201358a8a878181106109b3576109b3612d29565b905060200201356001611746565b5060010161094a565b505050505050505050505050565b6000603e6000610a1d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f57604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a70610a6b84805160209091012090565b6117e0565b9150610a7b82610a82565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161058d918491601291829161061d91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190612cbc565b9061185a565b6000603f6000610b5a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f5760405163b34afcf160e01b815260040160405180910390fd5b6000828152600260205260408120610ba490836119b4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061058d906119c0565b6000805160206133a3833981519152610c058161151c565b83801580610c135750808314155b15610c3157604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610c5057610c50612d29565b9050602002013519925082603f60008b8b85818110610c7157610c71612d29565b9050602002013581526020019081526020016000208190555082898983818110610c9d57610c9d612d29565b90506020020135836001600160a01b03167f5b8d0f05b93072a3e070357b7d9701f1c089233e92359bcbcb2c4b4dd182a15060405160405180910390a4600101610c36565b505050505050505050565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ca565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610e1257610e0a828f8f84818110610df057610df0612d29565b9050602002016020810190610e059190612d3f565b6119ca565b600101610dd2565b50603680546001600160a01b0319166001600160a01b038816179055610e3960008f6119ca565b610e438b8b6115bd565b610e4c896119d4565b610e5588611a09565b610e60878686611529565b505080156109ca576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610ed18161151c565b61074483836116d6565b6000805160206133a3833981519152610ef38161151c565b83801580610f015750808314155b15610f1f57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610f3e57610f3e612d29565b9050602002013519925082603e60008b8b85818110610f5f57610f5f612d29565b90506020020135815260200190815260200160002081905550888882818110610f8a57610f8a612d29565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610fcc91815260200190565b60405180910390a3600101610f24565b80516020808301919091206000818152603f9092526040822054801561100457199392505050565b6000828152603e60205260408120549081810361105657603c600061103361102b89611a85565b603854611b73565b8152602001908152602001600020546301e133806110519190612d72565b611065565b61106582196301e13380612d72565b905060006002611074866117e0565b61107e9190612d9f565b6110889083612db3565b9050680ad78ebc5ac62000008111156110a95760015b979650505050505050565b6802b5e3af16b18800008111156110c157600261109e565b600361109e565b60006110d38161151c565b6107dd82611a09565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061110f85611a85565b855160208701209091506000906000818152603e602052604090205490915080156111465761113f811987612d72565b8552611465565b6000603c600061115886603854611b73565b815260200190815260200160002054905080876111759190612d72565b865260006111b47fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190612dd6565b15611461576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190612df1565b90506000611328826001600160a01b03166303e9e609866040518263ffffffff1660e01b81526004016112c291815260200190565b600060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113079190810190612e98565b60200151604001516001600160401b03168c6001600160401b038016611b89565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612f9f565b5060408101516060015190915080158015906114255750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061303c565b6001600160401b03166114238285613059565b115b1561144357604051631bb03f9d60e01b815260040160405180910390fd5b61145a6037546114528b6117e0565b612710611bbf565b8b52505050505b5050505b835161147090610a82565b6020850152845161148090610a82565b60208601525092959194509092505050565b600061149d8161151c565b6107dd826119d4565b60006001600160e01b03198216637965db0b60e01b148061058d57506301ffc9a760e01b6001600160e01b031983161461058d565b600061151184611501876000015160070b8860400151866114fc919061306c565b611ca9565b61150c600187611ca9565b611bbf565b90505b949350505050565b6115268133611d03565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161158e91815260200190565b60405180910390a4505050565b6115a58282611d5c565b60008281526002602052604090206107449082611dc7565b60408051808201909152600080825260208201523390603854839060005b82811015611688578686828181106115f5576115f5612d29565b90506040020180360381019061160b9190613093565b935061161b828560000151611ddc565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161167891815260200190565b60405180910390a36001016115db565b5060385481146116ce57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6116e08282611deb565b60008281526002602052604090206107449082611e52565b868015806117065750858114155b806117115750838114155b8061171c5750818114155b1561173a57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061175286610593565b6000888152603d60205260409020909150838061176f5750805482115b925082156117c957818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611804575060009392505050565b60006118108242613059565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611851919061271084611e67565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000611893600185604001516114fc906130c5565b90506001600160ff1b038111156118c9576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107ca565b60006118d960016114fc866130c5565b90506001600160ff1b0381111561190957604051633e87ca5d60e11b8152600385900b60048201526024016107ca565b845160009060070b61191b83856130e8565b6119259190613118565b9050677fffffffffffffff81131561197157604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107ca565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610ba48383611f32565b600061058d825490565b6107dd828261159b565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b611a16828261315b565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc64611a48602084018461319d565b611a5860408501602086016131ba565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b80831015611b6b576000858481518110611aac57611aac612d29565b01602001516001600160f81b0319169050600160ff1b811015611ad457600184019350611b5f565b600760fd1b6001600160f81b031982161015611af557600284019350611b5f565b600f60fc1b6001600160f81b031982161015611b1657600384019350611b5f565b601f60fb1b6001600160f81b031982161015611b3757600484019350611b5f565b603f60fa1b6001600160f81b031982161015611b5857600584019350611b5f565b6006840193505b50600190910190611a90565b509392505050565b6000818310611b825781610ba4565b5090919050565b600081841180611b9857508183115b15611ba4575080610ba4565b611bae8484611f5c565b905081811115610ba4575092915050565b6000808060001985870985870292508281108382030391505080600003611bf957838281611bef57611bef612d89565b0492505050610ba4565b808411611c405760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107ca565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611cdb57611cbf826130c5565b611cca90600a6132bb565b611cd49084612d9f565b905061058d565b60008260030b1315611cfc57611cf282600a6132bb565b611cd49084612d72565b508161058d565b611d0d8282610bab565b6107dd57611d1a81611f70565b611d25836020611f82565b604051602001611d369291906132cd565b60408051601f198184030181529082905262461bcd60e51b82526107ca91600401613342565b611d668282610bab565b6107dd5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ba4836001600160a01b03841661211d565b6000818311611b825781610ba4565b611df58282610bab565b156107dd5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ba4836001600160a01b03841661216c565b60008085602001516001600160401b031683611e839190612d9f565b9050801580611e9a575085516001600160c01b0316155b15611ea85784915050611514565b85516001600160c01b03166001600160401b03851603611ecc576000915050611514565b61ffff811115611ef257604051637359f25f60e01b8152600481018290526024016107ca565b6000611f228760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611bbf565b905061109e86826127108561225f565b6000826000018281548110611f4957611f49612d29565b9060005260206000200154905092915050565b8181018281101561058d575060001961058d565b606061058d6001600160a01b03831660145b60606000611f91836002612d72565b611f9c906002612db3565b6001600160401b03811115611fb357611fb3612940565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b509050600360fc1b81600081518110611ff857611ff8612d29565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757612027612d29565b60200101906001600160f81b031916908160001a905350600061204b846002612d72565b612056906001612db3565b90505b60018111156120ce576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061208a5761208a612d29565b1a60f81b8282815181106120a0576120a0612d29565b60200101906001600160f81b031916908160001a90535060049490941c936120c781613375565b9050612059565b508315610ba45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ca565b60008181526001830160205260408120546121645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058d565b50600061058d565b60008181526001830160205260408120548015612255576000612190600183613059565b85549091506000906121a490600190613059565b90508181146122095760008660000182815481106121c4576121c4612d29565b90600052602060002001549050808760000184815481106121e7576121e7612d29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221a5761221a61338c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058d565b600091505061058d565b600082841480612271575061ffff8216155b1561227d575083611514565b5083600080808061229e61ffff87166122958a6123c2565b61ffff16611b73565b90505b61ffff8116156122f4576122bb8561ffff83168a0a612593565b909450925083156122d457829450808603955080820191505b6122ed600261ffff83160461ffff168761ffff16611b73565b90506122a1565b505b61ffff8516156123675761230a8488612593565b90935091508215612329576000199094019390925082906001016122f6565b61ffff81161561234e5785848161234257612342612d89565b049350600019016122f6565b612359848888611bbf565b6000199095019493506122f6565b6000612372876123c2565b90505b61ffff8216156123b65760006123938261ffff168461ffff16611b73565b90508061ffff16880a86816123aa576123aa612d89565b04955090910390612375565b50505050949350505050565b600060038210156123d5575060ff919050565b60048210156123e657506080919050565b60108210156123f757506040919050565b61010082101561240957506020919050565b611bdc82101561241b57506014919050565b612c7082101561242d57506013919050565b614aa982101561243f57506012919050565b61855482101561245157506011919050565b6201000082101561246457506010919050565b620218378210156124775750600f919050565b6204e04682101561248a5750600e919050565b620ced4c82101561249d5750600d919050565b622851468210156124b05750600c919050565b629aa2ad8210156124c35750600b919050565b6303080c018210156124d75750600a919050565b6315c5cbbd8210156124eb57506009919050565b64010000000082101561250057506008919050565b6417c6a1f29f82101561251557506007919050565b6506597fa94f5c82101561252b57506006919050565b66093088c35d733b82101561254257506005919050565b6801000000000000000082101561255b57506004919050565b6a285145f31ae515c447bb5782101561257657506003919050565b600160801b82101561258a57506002919050565b5060015b919050565b600080836000036125aa57506001905060006125d7565b838302838582816125bd576125bd612d89565b04146125d05760008092509250506125d7565b6001925090505b9250929050565b6000602082840312156125f057600080fd5b81356001600160e01b031981168114610ba457600080fd5b60006020828403121561261a57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561266b5761265b84835180518252602090810151910152565b928401929085019060010161263e565b5091979650505050505050565b6001600160a01b038116811461152657600080fd5b803561258e81612678565b6000806000606084860312156126ad57600080fd5b83356126b881612678565b95602085013595506040909401359392505050565b600080604083850312156126e057600080fd5b8235915060208301356126f281612678565b809150509250929050565b60008083601f84011261270f57600080fd5b5081356001600160401b0381111561272657600080fd5b6020830191508360208260061b85010111156125d757600080fd5b6000806020838503121561275457600080fd5b82356001600160401b0381111561276a57600080fd5b612776858286016126fd565b90969095509350505050565b60008083601f84011261279457600080fd5b5081356001600160401b038111156127ab57600080fd5b6020830191508360208260051b85010111156125d757600080fd5b6000806000806000806000806080898b0312156127e257600080fd5b88356001600160401b03808211156127f957600080fd5b6128058c838d01612782565b909a50985060208b013591508082111561281e57600080fd5b61282a8c838d01612782565b909850965060408b013591508082111561284357600080fd5b61284f8c838d01612782565b909650945060608b013591508082111561286857600080fd5b506128758b828c01612782565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156128c35783511515835292840192918401916001016128a5565b50909695505050505050565b600080602083850312156128e257600080fd5b82356001600160401b03808211156128f957600080fd5b818501915085601f83011261290d57600080fd5b81358181111561291c57600080fd5b86602082850101111561292e57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561297857612978612940565b60405290565b604080519081016001600160401b038111828210171561297857612978612940565b604051606081016001600160401b038111828210171561297857612978612940565b604051601f8201601f191681016001600160401b03811182821017156129ea576129ea612940565b604052919050565b60006001600160401b03821115612a0b57612a0b612940565b50601f01601f191660200190565b600082601f830112612a2a57600080fd5b8135612a3d612a38826129f2565b6129c2565b818152846020838601011115612a5257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612a8157600080fd5b81356001600160401b03811115612a9757600080fd5b61151484828501612a19565b60008060408385031215612ab657600080fd5b50508035926020909101359150565b60008060008060408587031215612adb57600080fd5b84356001600160401b0380821115612af257600080fd5b612afe88838901612782565b90965094506020870135915080821115612b1757600080fd5b50612b2487828801612782565b95989497509550505050565b600060408284031215612b4257600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612b6a57600080fd5b612b748c35612678565b8b359a506001600160401b038060208e01351115612b9157600080fd5b612ba18e60208f01358f01612782565b909b50995060408d0135811015612bb757600080fd5b50612bc88d60408e01358e016126fd565b909850965060608c01359550612be18d60808e01612b30565b945060c08c0135612bf181612678565b9350612bff60e08d0161268d565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612c3357600080fd5b610ba48383612b30565b60008060408385031215612c5057600080fd5b82356001600160401b03811115612c6657600080fd5b612c7285828601612a19565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610ba4565b6001600160401b038116811461152657600080fd5b600060808284031215612cce57600080fd5b612cd6612956565b82518060070b8114612ce757600080fd5b81526020830151612cf781612ca7565b60208201526040830151600381900b8114612d1157600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5157600080fd5b8135610ba481612678565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761058d5761058d612d5c565b634e487b7160e01b600052601260045260246000fd5b600082612dae57612dae612d89565b500490565b8082018082111561058d5761058d612d5c565b8051801515811461258e57600080fd5b600060208284031215612de857600080fd5b610ba482612dc6565b600060208284031215612e0357600080fd5b8151610ba481612678565b60005b83811015612e29578181015183820152602001612e11565b50506000910152565b600060808284031215612e4457600080fd5b612e4c612956565b90508151612e5981612678565b81526020820151612e6981612678565b60208201526040820151612e7c81612ca7565b6040820152612e8d60608301612dc6565b606082015292915050565b60006020808385031215612eab57600080fd5b82516001600160401b0380821115612ec257600080fd5b9084019060a08287031215612ed657600080fd5b612ede61297e565b825182811115612eed57600080fd5b830160608189031215612eff57600080fd5b612f076129a0565b815160ff81168114612f1857600080fd5b81528186015186820152604082015184811115612f3457600080fd5b82019350601f84018913612f4757600080fd5b83519150612f57612a38836129f2565b8281528987848701011115612f6b57600080fd5b612f7a83888301898801612e0e565b6040820152825250612f8e87848601612e32565b848201528094505050505092915050565b60008082840360e0811215612fb357600080fd5b60c0811215612fc157600080fd5b612fc96129a0565b84518152602085015160208201526080603f1983011215612fe957600080fd5b612ff1612956565b9150604085015161300181612678565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b60006020828403121561304e57600080fd5b8151610ba481612ca7565b8181038181111561058d5761058d612d5c565b600381810b9083900b01637fffffff8113637fffffff198212171561058d5761058d612d5c565b6000604082840312156130a557600080fd5b6130ad61297e565b82358152602083013560208201528091505092915050565b60008160030b637fffffff1981036130df576130df612d5c565b60000392915050565b80820260008212600160ff1b8414161561310457613104612d5c565b818105831482151761058d5761058d612d5c565b60008261312757613127612d89565b600160ff1b82146000198414161561314157613141612d5c565b500590565b6001600160c01b038116811461152657600080fd5b813561316681613146565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561319381612ca7565b60c01b1617905550565b6000602082840312156131af57600080fd5b8135610ba481613146565b6000602082840312156131cc57600080fd5b8135610ba481612ca7565b600181815b808511156132125781600019048211156131f8576131f8612d5c565b8085161561320557918102915b93841c93908002906131dc565b509250929050565b6000826132295750600161058d565b816132365750600061058d565b816001811461324c576002811461325657613272565b600191505061058d565b60ff84111561326757613267612d5c565b50506001821b61058d565b5060208310610133831016604e8410600b8410161715613295575081810a61058d565b61329f83836131d7565b80600019048211156132b3576132b3612d5c565b029392505050565b6000610ba463ffffffff84168361321a565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613305816017850160208801612e0e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613336816028840160208801612e0e565b01602801949350505050565b6020815260008251806020840152613361816040850160208701612e0e565b601f01601f19169190910160400192915050565b60008161338457613384612d5c565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220aa4555fbe062e1770c4b5761698a653314b019545fd8833721e1e457c7ea7bac64736f6c63430008150033", - "chainId": 2021, - "contractAbsolutePath": "RNSDomainPrice.sol", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063700213c81161011a578063cff8372f116100ad578063dfef64da1161007c578063dfef64da146104e7578063e229a670146104fa578063f4651f491461050d578063f5b541a61461052e578063fe303ebf1461055557600080fd5b8063cff8372f1461049b578063d40ed58c146104ae578063d547741f146104c1578063dd28776d146104d457600080fd5b80639010d07c116100e95780639010d07c1461044257806391d148541461046d578063a217fddf14610480578063ca15c8731461048857600080fd5b8063700213c8146103df578063713a69a7146103f45780637174026e1461041c5780637e32146a1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf90914610391578063599eaabf146103b15780635c68c830146103c45780635ef32e2c146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046125de565b610568565b60405190151581526020015b60405180910390f35b61023b610236366004612608565b610593565b60405190815260200161021f565b610251610625565b60405161021f9190612621565b61023b61026c366004612608565b6000908152600160208190526040909120015490565b610295610290366004612698565b610702565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d33660046126cd565b61071e565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612741565b610749565b6102956103133660046126cd565b61075e565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f3660046127c6565b6107e1565b60405161021f9190612889565b6102956103bf3660046127c6565b61091a565b61023b6103d23660046128cf565b6109d8565b60375461023b565b61023b6000805160206133a383398151915281565b610407610402366004612a6f565b610a56565b6040805192835260208301919091520161021f565b61023b61042a366004612608565b610a82565b61023b61043d3660046128cf565b610b15565b610455610450366004612aa3565b610b8c565b6040516001600160a01b03909116815260200161021f565b61021361047b3660046126cd565b610bab565b61023b600081565b61023b610496366004612608565b610bd6565b6102956104a9366004612ac5565b610bed565b6102956104bc366004612b48565b610ced565b6102956104cf3660046126cd565b610eb5565b6102956104e2366004612ac5565b610edb565b61023b6104f5366004612a6f565b610fdc565b610295610508366004612c21565b6110c8565b61052061051b366004612c3d565b6110dc565b60405161021f929190612c81565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b610295610563366004612608565b611492565b60006001600160e01b03198216635a05180f60e01b148061058d575061058d826114a6565b92915050565b603554603a5460395460405163052571af60e51b815260009361058d93869360129384936001600160a01b03169263a4ae35e0926105dc92600401918252602082015260400190565b608060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190612cbc565b9291906114db565b603854606090806001600160401b0381111561064357610643612940565b60405190808252806020026020018201604052801561068857816020015b60408051808201909152600080825260208201528152602001906001900390816106615790505b5091506000805b828110156106fc57806001019150818482815181106106b0576106b0612d29565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106e6576106e6612d29565b602090810291909101810151015260010161068f565b50505090565b600061070d8161151c565b610718848484611529565b50505050565b6000828152600160208190526040909120015461073a8161151c565b610744838361159b565b505050565b60006107548161151c565b61074483836115bd565b6001600160a01b03811633146107d35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107dd82826116d6565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961080d8161151c565b600061081f8b8b8b8b8b8b8b8b6116f8565b905033816001600160401b0381111561083a5761083a612940565b604051908082528060200260200182016040528015610863578160200160208202803683370190505b50935060005b8281101561090a576108e0828e8e8481811061088757610887612d29565b905060200201358d8d858181106108a0576108a0612d29565b905060200201358c8c868181106108b9576108b9612d29565b905060200201358b8b878181106108d2576108d2612d29565b905060200201356000611746565b8582815181106108f2576108f2612d29565b91151560209283029190910190910152600101610869565b5050505098975050505050505050565b6000805160206133a38339815191526109328161151c565b60006109448a8a8a8a8a8a8a8a6116f8565b90503360005b828110156109ca576109c1828d8d8481811061096857610968612d29565b905060200201358c8c8581811061098157610981612d29565b905060200201358b8b8681811061099a5761099a612d29565b905060200201358a8a878181106109b3576109b3612d29565b905060200201356001611746565b5060010161094a565b505050505050505050505050565b6000603e6000610a1d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f57604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a70610a6b84805160209091012090565b6117e0565b9150610a7b82610a82565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161058d918491601291829161061d91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190612cbc565b9061185a565b6000603f6000610b5a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f5760405163b34afcf160e01b815260040160405180910390fd5b6000828152600260205260408120610ba490836119b4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061058d906119c0565b6000805160206133a3833981519152610c058161151c565b83801580610c135750808314155b15610c3157604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610c5057610c50612d29565b9050602002013519925082603f60008b8b85818110610c7157610c71612d29565b9050602002013581526020019081526020016000208190555082898983818110610c9d57610c9d612d29565b90506020020135836001600160a01b03167f5b8d0f05b93072a3e070357b7d9701f1c089233e92359bcbcb2c4b4dd182a15060405160405180910390a4600101610c36565b505050505050505050565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ca565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610e1257610e0a828f8f84818110610df057610df0612d29565b9050602002016020810190610e059190612d3f565b6119ca565b600101610dd2565b50603680546001600160a01b0319166001600160a01b038816179055610e3960008f6119ca565b610e438b8b6115bd565b610e4c896119d4565b610e5588611a09565b610e60878686611529565b505080156109ca576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610ed18161151c565b61074483836116d6565b6000805160206133a3833981519152610ef38161151c565b83801580610f015750808314155b15610f1f57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610f3e57610f3e612d29565b9050602002013519925082603e60008b8b85818110610f5f57610f5f612d29565b90506020020135815260200190815260200160002081905550888882818110610f8a57610f8a612d29565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610fcc91815260200190565b60405180910390a3600101610f24565b80516020808301919091206000818152603f9092526040822054801561100457199392505050565b6000828152603e60205260408120549081810361105657603c600061103361102b89611a85565b603854611b73565b8152602001908152602001600020546301e133806110519190612d72565b611065565b61106582196301e13380612d72565b905060006002611074866117e0565b61107e9190612d9f565b6110889083612db3565b9050680ad78ebc5ac62000008111156110a95760015b979650505050505050565b6802b5e3af16b18800008111156110c157600261109e565b600361109e565b60006110d38161151c565b6107dd82611a09565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061110f85611a85565b855160208701209091506000906000818152603e602052604090205490915080156111465761113f811987612d72565b8552611465565b6000603c600061115886603854611b73565b815260200190815260200160002054905080876111759190612d72565b865260006111b47fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190612dd6565b15611461576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190612df1565b90506000611328826001600160a01b03166303e9e609866040518263ffffffff1660e01b81526004016112c291815260200190565b600060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113079190810190612e98565b60200151604001516001600160401b03168c6001600160401b038016611b89565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612f9f565b5060408101516060015190915080158015906114255750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061303c565b6001600160401b03166114238285613059565b115b1561144357604051631bb03f9d60e01b815260040160405180910390fd5b61145a6037546114528b6117e0565b612710611bbf565b8b52505050505b5050505b835161147090610a82565b6020850152845161148090610a82565b60208601525092959194509092505050565b600061149d8161151c565b6107dd826119d4565b60006001600160e01b03198216637965db0b60e01b148061058d57506301ffc9a760e01b6001600160e01b031983161461058d565b600061151184611501876000015160070b8860400151866114fc919061306c565b611ca9565b61150c600187611ca9565b611bbf565b90505b949350505050565b6115268133611d03565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161158e91815260200190565b60405180910390a4505050565b6115a58282611d5c565b60008281526002602052604090206107449082611dc7565b60408051808201909152600080825260208201523390603854839060005b82811015611688578686828181106115f5576115f5612d29565b90506040020180360381019061160b9190613093565b935061161b828560000151611ddc565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161167891815260200190565b60405180910390a36001016115db565b5060385481146116ce57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6116e08282611deb565b60008281526002602052604090206107449082611e52565b868015806117065750858114155b806117115750838114155b8061171c5750818114155b1561173a57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061175286610593565b6000888152603d60205260409020909150838061176f5750805482115b925082156117c957818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611804575060009392505050565b60006118108242613059565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611851919061271084611e67565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000611893600185604001516114fc906130c5565b90506001600160ff1b038111156118c9576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107ca565b60006118d960016114fc866130c5565b90506001600160ff1b0381111561190957604051633e87ca5d60e11b8152600385900b60048201526024016107ca565b845160009060070b61191b83856130e8565b6119259190613118565b9050677fffffffffffffff81131561197157604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107ca565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610ba48383611f32565b600061058d825490565b6107dd828261159b565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b611a16828261315b565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc64611a48602084018461319d565b611a5860408501602086016131ba565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b80831015611b6b576000858481518110611aac57611aac612d29565b01602001516001600160f81b0319169050600160ff1b811015611ad457600184019350611b5f565b600760fd1b6001600160f81b031982161015611af557600284019350611b5f565b600f60fc1b6001600160f81b031982161015611b1657600384019350611b5f565b601f60fb1b6001600160f81b031982161015611b3757600484019350611b5f565b603f60fa1b6001600160f81b031982161015611b5857600584019350611b5f565b6006840193505b50600190910190611a90565b509392505050565b6000818310611b825781610ba4565b5090919050565b600081841180611b9857508183115b15611ba4575080610ba4565b611bae8484611f5c565b905081811115610ba4575092915050565b6000808060001985870985870292508281108382030391505080600003611bf957838281611bef57611bef612d89565b0492505050610ba4565b808411611c405760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107ca565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611cdb57611cbf826130c5565b611cca90600a6132bb565b611cd49084612d9f565b905061058d565b60008260030b1315611cfc57611cf282600a6132bb565b611cd49084612d72565b508161058d565b611d0d8282610bab565b6107dd57611d1a81611f70565b611d25836020611f82565b604051602001611d369291906132cd565b60408051601f198184030181529082905262461bcd60e51b82526107ca91600401613342565b611d668282610bab565b6107dd5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ba4836001600160a01b03841661211d565b6000818311611b825781610ba4565b611df58282610bab565b156107dd5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ba4836001600160a01b03841661216c565b60008085602001516001600160401b031683611e839190612d9f565b9050801580611e9a575085516001600160c01b0316155b15611ea85784915050611514565b85516001600160c01b03166001600160401b03851603611ecc576000915050611514565b61ffff811115611ef257604051637359f25f60e01b8152600481018290526024016107ca565b6000611f228760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611bbf565b905061109e86826127108561225f565b6000826000018281548110611f4957611f49612d29565b9060005260206000200154905092915050565b8181018281101561058d575060001961058d565b606061058d6001600160a01b03831660145b60606000611f91836002612d72565b611f9c906002612db3565b6001600160401b03811115611fb357611fb3612940565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b509050600360fc1b81600081518110611ff857611ff8612d29565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757612027612d29565b60200101906001600160f81b031916908160001a905350600061204b846002612d72565b612056906001612db3565b90505b60018111156120ce576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061208a5761208a612d29565b1a60f81b8282815181106120a0576120a0612d29565b60200101906001600160f81b031916908160001a90535060049490941c936120c781613375565b9050612059565b508315610ba45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ca565b60008181526001830160205260408120546121645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058d565b50600061058d565b60008181526001830160205260408120548015612255576000612190600183613059565b85549091506000906121a490600190613059565b90508181146122095760008660000182815481106121c4576121c4612d29565b90600052602060002001549050808760000184815481106121e7576121e7612d29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221a5761221a61338c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058d565b600091505061058d565b600082841480612271575061ffff8216155b1561227d575083611514565b5083600080808061229e61ffff87166122958a6123c2565b61ffff16611b73565b90505b61ffff8116156122f4576122bb8561ffff83168a0a612593565b909450925083156122d457829450808603955080820191505b6122ed600261ffff83160461ffff168761ffff16611b73565b90506122a1565b505b61ffff8516156123675761230a8488612593565b90935091508215612329576000199094019390925082906001016122f6565b61ffff81161561234e5785848161234257612342612d89565b049350600019016122f6565b612359848888611bbf565b6000199095019493506122f6565b6000612372876123c2565b90505b61ffff8216156123b65760006123938261ffff168461ffff16611b73565b90508061ffff16880a86816123aa576123aa612d89565b04955090910390612375565b50505050949350505050565b600060038210156123d5575060ff919050565b60048210156123e657506080919050565b60108210156123f757506040919050565b61010082101561240957506020919050565b611bdc82101561241b57506014919050565b612c7082101561242d57506013919050565b614aa982101561243f57506012919050565b61855482101561245157506011919050565b6201000082101561246457506010919050565b620218378210156124775750600f919050565b6204e04682101561248a5750600e919050565b620ced4c82101561249d5750600d919050565b622851468210156124b05750600c919050565b629aa2ad8210156124c35750600b919050565b6303080c018210156124d75750600a919050565b6315c5cbbd8210156124eb57506009919050565b64010000000082101561250057506008919050565b6417c6a1f29f82101561251557506007919050565b6506597fa94f5c82101561252b57506006919050565b66093088c35d733b82101561254257506005919050565b6801000000000000000082101561255b57506004919050565b6a285145f31ae515c447bb5782101561257657506003919050565b600160801b82101561258a57506002919050565b5060015b919050565b600080836000036125aa57506001905060006125d7565b838302838582816125bd576125bd612d89565b04146125d05760008092509250506125d7565b6001925090505b9250929050565b6000602082840312156125f057600080fd5b81356001600160e01b031981168114610ba457600080fd5b60006020828403121561261a57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561266b5761265b84835180518252602090810151910152565b928401929085019060010161263e565b5091979650505050505050565b6001600160a01b038116811461152657600080fd5b803561258e81612678565b6000806000606084860312156126ad57600080fd5b83356126b881612678565b95602085013595506040909401359392505050565b600080604083850312156126e057600080fd5b8235915060208301356126f281612678565b809150509250929050565b60008083601f84011261270f57600080fd5b5081356001600160401b0381111561272657600080fd5b6020830191508360208260061b85010111156125d757600080fd5b6000806020838503121561275457600080fd5b82356001600160401b0381111561276a57600080fd5b612776858286016126fd565b90969095509350505050565b60008083601f84011261279457600080fd5b5081356001600160401b038111156127ab57600080fd5b6020830191508360208260051b85010111156125d757600080fd5b6000806000806000806000806080898b0312156127e257600080fd5b88356001600160401b03808211156127f957600080fd5b6128058c838d01612782565b909a50985060208b013591508082111561281e57600080fd5b61282a8c838d01612782565b909850965060408b013591508082111561284357600080fd5b61284f8c838d01612782565b909650945060608b013591508082111561286857600080fd5b506128758b828c01612782565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156128c35783511515835292840192918401916001016128a5565b50909695505050505050565b600080602083850312156128e257600080fd5b82356001600160401b03808211156128f957600080fd5b818501915085601f83011261290d57600080fd5b81358181111561291c57600080fd5b86602082850101111561292e57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561297857612978612940565b60405290565b604080519081016001600160401b038111828210171561297857612978612940565b604051606081016001600160401b038111828210171561297857612978612940565b604051601f8201601f191681016001600160401b03811182821017156129ea576129ea612940565b604052919050565b60006001600160401b03821115612a0b57612a0b612940565b50601f01601f191660200190565b600082601f830112612a2a57600080fd5b8135612a3d612a38826129f2565b6129c2565b818152846020838601011115612a5257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612a8157600080fd5b81356001600160401b03811115612a9757600080fd5b61151484828501612a19565b60008060408385031215612ab657600080fd5b50508035926020909101359150565b60008060008060408587031215612adb57600080fd5b84356001600160401b0380821115612af257600080fd5b612afe88838901612782565b90965094506020870135915080821115612b1757600080fd5b50612b2487828801612782565b95989497509550505050565b600060408284031215612b4257600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612b6a57600080fd5b612b748c35612678565b8b359a506001600160401b038060208e01351115612b9157600080fd5b612ba18e60208f01358f01612782565b909b50995060408d0135811015612bb757600080fd5b50612bc88d60408e01358e016126fd565b909850965060608c01359550612be18d60808e01612b30565b945060c08c0135612bf181612678565b9350612bff60e08d0161268d565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612c3357600080fd5b610ba48383612b30565b60008060408385031215612c5057600080fd5b82356001600160401b03811115612c6657600080fd5b612c7285828601612a19565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610ba4565b6001600160401b038116811461152657600080fd5b600060808284031215612cce57600080fd5b612cd6612956565b82518060070b8114612ce757600080fd5b81526020830151612cf781612ca7565b60208201526040830151600381900b8114612d1157600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5157600080fd5b8135610ba481612678565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761058d5761058d612d5c565b634e487b7160e01b600052601260045260246000fd5b600082612dae57612dae612d89565b500490565b8082018082111561058d5761058d612d5c565b8051801515811461258e57600080fd5b600060208284031215612de857600080fd5b610ba482612dc6565b600060208284031215612e0357600080fd5b8151610ba481612678565b60005b83811015612e29578181015183820152602001612e11565b50506000910152565b600060808284031215612e4457600080fd5b612e4c612956565b90508151612e5981612678565b81526020820151612e6981612678565b60208201526040820151612e7c81612ca7565b6040820152612e8d60608301612dc6565b606082015292915050565b60006020808385031215612eab57600080fd5b82516001600160401b0380821115612ec257600080fd5b9084019060a08287031215612ed657600080fd5b612ede61297e565b825182811115612eed57600080fd5b830160608189031215612eff57600080fd5b612f076129a0565b815160ff81168114612f1857600080fd5b81528186015186820152604082015184811115612f3457600080fd5b82019350601f84018913612f4757600080fd5b83519150612f57612a38836129f2565b8281528987848701011115612f6b57600080fd5b612f7a83888301898801612e0e565b6040820152825250612f8e87848601612e32565b848201528094505050505092915050565b60008082840360e0811215612fb357600080fd5b60c0811215612fc157600080fd5b612fc96129a0565b84518152602085015160208201526080603f1983011215612fe957600080fd5b612ff1612956565b9150604085015161300181612678565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b60006020828403121561304e57600080fd5b8151610ba481612ca7565b8181038181111561058d5761058d612d5c565b600381810b9083900b01637fffffff8113637fffffff198212171561058d5761058d612d5c565b6000604082840312156130a557600080fd5b6130ad61297e565b82358152602083013560208201528091505092915050565b60008160030b637fffffff1981036130df576130df612d5c565b60000392915050565b80820260008212600160ff1b8414161561310457613104612d5c565b818105831482151761058d5761058d612d5c565b60008261312757613127612d89565b600160ff1b82146000198414161561314157613141612d5c565b500590565b6001600160c01b038116811461152657600080fd5b813561316681613146565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561319381612ca7565b60c01b1617905550565b6000602082840312156131af57600080fd5b8135610ba481613146565b6000602082840312156131cc57600080fd5b8135610ba481612ca7565b600181815b808511156132125781600019048211156131f8576131f8612d5c565b8085161561320557918102915b93841c93908002906131dc565b509250929050565b6000826132295750600161058d565b816132365750600061058d565b816001811461324c576002811461325657613272565b600191505061058d565b60ff84111561326757613267612d5c565b50506001821b61058d565b5060208310610133831016604e8410600b8410161715613295575081810a61058d565b61329f83836131d7565b80600019048211156132b3576132b3612d5c565b029392505050565b6000610ba463ffffffff84168361321a565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613305816017850160208801612e0e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613336816028840160208801612e0e565b01602801949350505050565b6020815260008251806020840152613361816040850160208701612e0e565b601f01601f19169190910160400192915050565b60008161338457613384612d5c565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220aa4555fbe062e1770c4b5761698a653314b019545fd8833721e1e457c7ea7bac64736f6c63430008150033", -<<<<<<< Updated upstream -======= -======= - "blockNumber": 25510211, - "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", - "chainId": 2021, - "contractAbsolutePath": "RNSDomainPrice.sol", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", ->>>>>>> Stashed changes -======= - "blockNumber": 25510211, - "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", - "chainId": 2021, - "contractAbsolutePath": "RNSDomainPrice.sol", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "deployer": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", - "devdoc": { - "version": 1, - "kind": "dev", - "methods": { - "bulkOverrideRenewalFees(bytes32[],uint256[])": { - "details": "Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.", - "params": { - "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", - "usdPrices": "Array of prices in USD. Leave 2^256 - 1 to remove overriding." - } - }, -<<<<<<< Updated upstream - "bulkOverrideTiers(bytes32[],uint256[])": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "bulkOverrideTiers(bytes32[],uint256[])": { -======= - "bulkOverrideTiers(bytes32[],uint8[])": { ->>>>>>> Stashed changes -======= - "bulkOverrideTiers(bytes32[],uint8[])": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "details": "Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.", - "params": { - "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", - "tiers": "Array of tiers. Leave 2^256 - 1 to remove overriding." - } - }, - "bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])": { - "details": "Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.", - "params": { - "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", - "proofHashes": "Array of proof hashes.", - "ronPrices": "Array of prices in (W)RON token.", - "setTypes": "Array of update types from the operator service." - } - }, - "bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])": { - "details": "Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.", - "params": { - "lbHashes": "Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')", - "proofHashes": "Array of proof hashes.", - "ronPrices": "Array of prices in (W)RON token.", - "setTypes": "Array of update types from the operator service." - } - }, - "convertRONToUSD(uint256)": { - "details": "Returns the converted amount from RON to USD." - }, - "convertUSDToRON(uint256)": { - "details": "Returns the converted amount from USD to RON." - }, - "getDomainPrice(string)": { - "details": "Return the domain price.", - "params": { - "label": "The domain label to register (Eg, 'foo' for 'foo.ron')." - } - }, - "getOverriddenRenewalFee(string)": { - "details": "Returns the renewal fee of a label. Reverts if not overridden." - }, - "getOverriddenTier(string)": { - "details": "Returns the tier of a label. Reverts if not overridden." - }, - "getPythOracleConfig()": { - "details": "Returns the Pyth oracle config." - }, - "getRenewalFee(string,uint256)": { - "details": "Returns the renewal fee in USD and RON.", - "params": { - "duration": "Amount of second(s).", - "label": "The domain label to register (Eg, 'foo' for 'foo.ron')." - } - }, - "getRenewalFeeByLengths()": { - "details": "Returns the renewal fee by lengths." - }, - "getRoleAdmin(bytes32)": { - "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." - }, - "getRoleMember(bytes32,uint256)": { - "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." }, "getRoleMemberCount(bytes32)": { "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." @@ -46129,58 +1270,18 @@ "TaxRatioUpdated(address,uint256)": { "details": "Emitted when the renewal reservation ratio is updated." }, -<<<<<<< Updated upstream - "TierOverridingUpdated(address,bytes32,uint256)": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "TierOverridingUpdated(address,bytes32,uint256)": { -======= "TierOverridingUpdated(address,bytes32,uint8)": { ->>>>>>> Stashed changes -======= - "TierOverridingUpdated(address,bytes32,uint8)": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes "details": "Emitted when the tier of a domain is overridden." } } }, "isFoundry": true, -<<<<<<< Updated upstream - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tiers\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint256[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1\"},\"TIER_2_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1\\n uint256 private constant TIER_1_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2\\n uint256 private constant TIER_2_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint256 tier) _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (uint256 tier) {\\n tier = _tierOverriding[label.hashLabel()];\\n if (tier == 0) revert TierIsNotOverriden();\\n return ~tier;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~tiers[i];\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (uint256 tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return ~overriddenTier;\\n\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n uint256 yearlyRenewalFeeByLength = overriddenRenewalFee != 0\\n ? 365 days * ~overriddenRenewalFee\\n : 365 days * _rnFee[Math.min(label.strlen(), _rnfMaxLength)];\\n uint256 tierValue = yearlyRenewalFeeByLength + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_THRESHOLD) {\\n return uint256(Tier.Tier1);\\n } else if (tierValue > TIER_2_THRESHOLD) {\\n return uint256(Tier.Tier2);\\n } else {\\n return uint256(Tier.Tier3);\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n revert ExceedAuctionDomainExpiry();\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0xba0a37161cd0cf02d08e62eba722c25c748834ca08e0231fbc6c47a97098d6b5\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x7bb3e2ecc33f60ade262ad20fc621474ca1c5bcd247b980caa564be256afb59d\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 190743, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tiers\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint256[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1\"},\"TIER_2_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1\\n uint256 private constant TIER_1_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2\\n uint256 private constant TIER_2_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint256 tier) _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (uint256 tier) {\\n tier = _tierOverriding[label.hashLabel()];\\n if (tier == 0) revert TierIsNotOverriden();\\n return ~tier;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~tiers[i];\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (uint256 tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return ~overriddenTier;\\n\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n uint256 yearlyRenewalFeeByLength = overriddenRenewalFee != 0\\n ? 365 days * ~overriddenRenewalFee\\n : 365 days * _rnFee[Math.min(label.strlen(), _rnfMaxLength)];\\n uint256 tierValue = yearlyRenewalFeeByLength + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_THRESHOLD) {\\n return uint256(Tier.Tier1);\\n } else if (tierValue > TIER_2_THRESHOLD) {\\n return uint256(Tier.Tier2);\\n } else {\\n return uint256(Tier.Tier3);\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n revert ExceedAuctionDomainExpiry();\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0xba0a37161cd0cf02d08e62eba722c25c748834ca08e0231fbc6c47a97098d6b5\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x7bb3e2ecc33f60ade262ad20fc621474ca1c5bcd247b980caa564be256afb59d\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 190743, -======= - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 192559, ->>>>>>> Stashed changes -======= - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 192559, ->>>>>>> Stashed changes ->>>>>>> Stashed changes - "numDeployments": 4, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/contract-libs/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":openzeppelin-contracts/=lib/contract-template/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/contract-libs/lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 0, "storageLayout": { "storage": [ { -<<<<<<< Updated upstream - "astId": 70444, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 70444, -======= - "astId": 101362, ->>>>>>> Stashed changes -======= - "astId": 101362, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 60342, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_initialized", "offset": 0, @@ -46188,19 +1289,7 @@ "type": "t_uint8" }, { -<<<<<<< Updated upstream - "astId": 70447, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 70447, -======= - "astId": 101365, ->>>>>>> Stashed changes -======= - "astId": 101365, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 60345, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_initializing", "offset": 1, @@ -46208,75 +1297,23 @@ "type": "t_bool" }, { -<<<<<<< Updated upstream - "astId": 68917, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 68917, -======= - "astId": 99835, ->>>>>>> Stashed changes -======= - "astId": 99835, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 58815, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_roles", "offset": 0, "slot": "1", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_mapping(t_bytes32,t_struct(RoleData)68912_storage)" - }, - { - "astId": 69227, -<<<<<<< Updated upstream -======= -======= - "type": "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)" - }, - { - "astId": 100145, ->>>>>>> Stashed changes -======= - "type": "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)" + "type": "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)" }, { - "astId": 100145, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 59125, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_roleMembers", "offset": 0, "slot": "2", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_mapping(t_bytes32,t_struct(AddressSet)74796_storage)" - }, - { - "astId": 86385, -<<<<<<< Updated upstream -======= -======= - "type": "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)" - }, - { - "astId": 118300, ->>>>>>> Stashed changes -======= - "type": "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)" + "type": "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)" }, { - "astId": 118300, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79515, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "____gap", "offset": 0, @@ -46284,75 +1321,23 @@ "type": "t_array(t_uint256)50_storage" }, { -<<<<<<< Updated upstream - "astId": 86389, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86389, -======= - "astId": 118304, ->>>>>>> Stashed changes -======= - "astId": 118304, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79519, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_pyth", "offset": 0, "slot": "53", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_contract(IPyth)75202" - }, - { - "astId": 86393, -<<<<<<< Updated upstream -======= -======= - "type": "t_contract(IPyth)106120" - }, - { - "astId": 118308, ->>>>>>> Stashed changes -======= - "type": "t_contract(IPyth)106120" + "type": "t_contract(IPyth)65100" }, { - "astId": 118308, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79523, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_auction", "offset": 0, "slot": "54", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_contract(INSAuction)91351" - }, - { - "astId": 86396, -<<<<<<< Updated upstream -======= -======= - "type": "t_contract(INSAuction)123292" - }, - { - "astId": 118311, ->>>>>>> Stashed changes -======= - "type": "t_contract(INSAuction)123292" + "type": "t_contract(INSAuction)84507" }, { - "astId": 118311, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79526, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_taxRatio", "offset": 0, @@ -46360,19 +1345,7 @@ "type": "t_uint256" }, { -<<<<<<< Updated upstream - "astId": 86399, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86399, -======= - "astId": 118314, ->>>>>>> Stashed changes -======= - "astId": 118314, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79529, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnfMaxLength", "offset": 0, @@ -46380,19 +1353,7 @@ "type": "t_uint256" }, { -<<<<<<< Updated upstream - "astId": 86402, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86402, -======= - "astId": 118317, ->>>>>>> Stashed changes -======= - "astId": 118317, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79532, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_maxAcceptableAge", "offset": 0, @@ -46400,19 +1361,7 @@ "type": "t_uint256" }, { -<<<<<<< Updated upstream - "astId": 86405, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86405, -======= - "astId": 118320, ->>>>>>> Stashed changes -======= - "astId": 118320, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79535, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_pythIdForRONUSD", "offset": 0, @@ -46420,47 +1369,15 @@ "type": "t_bytes32" }, { -<<<<<<< Updated upstream - "astId": 86409, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86409, -======= - "astId": 118324, ->>>>>>> Stashed changes -======= - "astId": 118324, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79539, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_dpDownScaler", "offset": 0, "slot": "59", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_struct(PeriodScaler)93662_storage" - }, - { - "astId": 86414, -<<<<<<< Updated upstream -======= -======= - "type": "t_struct(PeriodScaler)125607_storage" - }, - { - "astId": 118329, ->>>>>>> Stashed changes -======= - "type": "t_struct(PeriodScaler)125607_storage" + "type": "t_struct(PeriodScaler)86906_storage" }, { - "astId": 118329, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79544, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnFee", "offset": 0, @@ -46468,47 +1385,15 @@ "type": "t_mapping(t_uint256,t_uint256)" }, { -<<<<<<< Updated upstream - "astId": 86420, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86420, -======= - "astId": 118335, ->>>>>>> Stashed changes -======= - "astId": 118335, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79550, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_dp", "offset": 0, "slot": "61", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)93585_storage)" - }, - { - "astId": 86425, -<<<<<<< Updated upstream -======= -======= - "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)" - }, - { - "astId": 118340, ->>>>>>> Stashed changes -======= - "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)" + "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)86829_storage)" }, { - "astId": 118340, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79555, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_rnFeeOverriding", "offset": 0, @@ -46516,36 +1401,12 @@ "type": "t_mapping(t_bytes32,t_uint256)" }, { -<<<<<<< Updated upstream - "astId": 86430, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 86430, -======= - "astId": 118345, ->>>>>>> Stashed changes -======= - "astId": 118345, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 79560, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_tierOverriding", "offset": 0, "slot": "63", -<<<<<<< Updated upstream - "type": "t_mapping(t_bytes32,t_uint256)" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "type": "t_mapping(t_bytes32,t_uint256)" -======= - "type": "t_mapping(t_bytes32,t_uint8)" ->>>>>>> Stashed changes -======= "type": "t_mapping(t_bytes32,t_uint8)" ->>>>>>> Stashed changes ->>>>>>> Stashed changes } ], "types": { @@ -46576,36 +1437,12 @@ "label": "bytes32", "numberOfBytes": "32" }, -<<<<<<< Updated upstream - "t_contract(INSAuction)91351": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_contract(INSAuction)91351": { -======= - "t_contract(INSAuction)123292": { ->>>>>>> Stashed changes -======= - "t_contract(INSAuction)123292": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_contract(INSAuction)84507": { "encoding": "inplace", "label": "contract INSAuction", "numberOfBytes": "20" }, -<<<<<<< Updated upstream - "t_contract(IPyth)75202": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_contract(IPyth)75202": { -======= - "t_contract(IPyth)106120": { ->>>>>>> Stashed changes -======= - "t_contract(IPyth)106120": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_contract(IPyth)65100": { "encoding": "inplace", "label": "contract IPyth", "numberOfBytes": "20" @@ -46617,86 +1454,26 @@ "numberOfBytes": "32", "value": "t_bool" }, -<<<<<<< Updated upstream - "t_mapping(t_bytes32,t_struct(AddressSet)74796_storage)": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_mapping(t_bytes32,t_struct(AddressSet)74796_storage)": { -======= - "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)": { ->>>>>>> Stashed changes -======= - "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct EnumerableSet.AddressSet)", "numberOfBytes": "32", -<<<<<<< Updated upstream - "value": "t_struct(AddressSet)74796_storage" + "value": "t_struct(AddressSet)64694_storage" }, - "t_mapping(t_bytes32,t_struct(RoleData)68912_storage)": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "value": "t_struct(AddressSet)74796_storage" - }, - "t_mapping(t_bytes32,t_struct(RoleData)68912_storage)": { -======= - "value": "t_struct(AddressSet)105714_storage" - }, - "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)": { ->>>>>>> Stashed changes -======= - "value": "t_struct(AddressSet)105714_storage" - }, - "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct AccessControl.RoleData)", "numberOfBytes": "32", -<<<<<<< Updated upstream - "value": "t_struct(RoleData)68912_storage" - }, - "t_mapping(t_bytes32,t_struct(TimestampWrapper)93585_storage)": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "value": "t_struct(RoleData)68912_storage" + "value": "t_struct(RoleData)58810_storage" }, - "t_mapping(t_bytes32,t_struct(TimestampWrapper)93585_storage)": { -======= - "value": "t_struct(RoleData)99830_storage" - }, - "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)": { ->>>>>>> Stashed changes -======= - "value": "t_struct(RoleData)99830_storage" - }, - "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_mapping(t_bytes32,t_struct(TimestampWrapper)86829_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct TimestampWrapper)", "numberOfBytes": "32", -<<<<<<< Updated upstream - "value": "t_struct(TimestampWrapper)93585_storage" -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "value": "t_struct(TimestampWrapper)93585_storage" -======= - "value": "t_struct(TimestampWrapper)125530_storage" ->>>>>>> Stashed changes -======= - "value": "t_struct(TimestampWrapper)125530_storage" ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "value": "t_struct(TimestampWrapper)86829_storage" }, "t_mapping(t_bytes32,t_uint256)": { "encoding": "mapping", @@ -46705,6 +1482,13 @@ "numberOfBytes": "32", "value": "t_uint256" }, + "t_mapping(t_bytes32,t_uint8)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint8)", + "numberOfBytes": "32", + "value": "t_uint8" + }, "t_mapping(t_uint256,t_uint256)": { "encoding": "mapping", "key": "t_uint256", @@ -46712,86 +1496,28 @@ "numberOfBytes": "32", "value": "t_uint256" }, -<<<<<<< Updated upstream - "t_struct(AddressSet)74796_storage": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_struct(AddressSet)74796_storage": { -======= - "t_struct(AddressSet)105714_storage": { ->>>>>>> Stashed changes -======= - "t_struct(AddressSet)105714_storage": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_struct(AddressSet)64694_storage": { "encoding": "inplace", "label": "struct EnumerableSet.AddressSet", "numberOfBytes": "64", "members": [ { -<<<<<<< Updated upstream - "astId": 74795, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 74795, -======= - "astId": 105713, ->>>>>>> Stashed changes -======= - "astId": 105713, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 64693, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_inner", "offset": 0, "slot": "0", -<<<<<<< Updated upstream -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream ->>>>>>> Stashed changes - "type": "t_struct(Set)74481_storage" - } - ] - }, - "t_struct(PeriodScaler)93662_storage": { -<<<<<<< Updated upstream -======= -======= - "type": "t_struct(Set)105399_storage" - } - ] - }, - "t_struct(PeriodScaler)125607_storage": { ->>>>>>> Stashed changes -======= - "type": "t_struct(Set)105399_storage" + "type": "t_struct(Set)64379_storage" } ] }, - "t_struct(PeriodScaler)125607_storage": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_struct(PeriodScaler)86906_storage": { "encoding": "inplace", "label": "struct PeriodScaler", "numberOfBytes": "32", "members": [ { -<<<<<<< Updated upstream - "astId": 93659, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 93659, -======= - "astId": 125604, ->>>>>>> Stashed changes -======= - "astId": 125604, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 86903, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "ratio", "offset": 0, @@ -46799,19 +1525,7 @@ "type": "t_uint192" }, { -<<<<<<< Updated upstream - "astId": 93661, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 93661, -======= - "astId": 125606, ->>>>>>> Stashed changes -======= - "astId": 125606, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 86905, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "period", "offset": 24, @@ -46820,37 +1534,13 @@ } ] }, -<<<<<<< Updated upstream - "t_struct(RoleData)68912_storage": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_struct(RoleData)68912_storage": { -======= - "t_struct(RoleData)99830_storage": { ->>>>>>> Stashed changes -======= - "t_struct(RoleData)99830_storage": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_struct(RoleData)58810_storage": { "encoding": "inplace", "label": "struct AccessControl.RoleData", "numberOfBytes": "64", "members": [ { -<<<<<<< Updated upstream - "astId": 68909, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 68909, -======= - "astId": 99827, ->>>>>>> Stashed changes -======= - "astId": 99827, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 58807, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "members", "offset": 0, @@ -46858,19 +1548,7 @@ "type": "t_mapping(t_address,t_bool)" }, { -<<<<<<< Updated upstream - "astId": 68911, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 68911, -======= - "astId": 99829, ->>>>>>> Stashed changes -======= - "astId": 99829, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 58809, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "adminRole", "offset": 0, @@ -46879,37 +1557,13 @@ } ] }, -<<<<<<< Updated upstream - "t_struct(Set)74481_storage": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_struct(Set)74481_storage": { -======= - "t_struct(Set)105399_storage": { ->>>>>>> Stashed changes -======= - "t_struct(Set)105399_storage": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_struct(Set)64379_storage": { "encoding": "inplace", "label": "struct EnumerableSet.Set", "numberOfBytes": "64", "members": [ { -<<<<<<< Updated upstream - "astId": 74476, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 74476, -======= - "astId": 105394, ->>>>>>> Stashed changes -======= - "astId": 105394, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 64374, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_values", "offset": 0, @@ -46917,19 +1571,7 @@ "type": "t_array(t_bytes32)dyn_storage" }, { -<<<<<<< Updated upstream - "astId": 74480, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 74480, -======= - "astId": 105398, ->>>>>>> Stashed changes -======= - "astId": 105398, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 64378, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "_indexes", "offset": 0, @@ -46938,37 +1580,13 @@ } ] }, -<<<<<<< Updated upstream - "t_struct(TimestampWrapper)93585_storage": { -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "t_struct(TimestampWrapper)93585_storage": { -======= - "t_struct(TimestampWrapper)125530_storage": { ->>>>>>> Stashed changes -======= - "t_struct(TimestampWrapper)125530_storage": { ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "t_struct(TimestampWrapper)86829_storage": { "encoding": "inplace", "label": "struct TimestampWrapper", "numberOfBytes": "64", "members": [ { -<<<<<<< Updated upstream - "astId": 93582, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 93582, -======= - "astId": 125527, ->>>>>>> Stashed changes -======= - "astId": 125527, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 86826, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "value", "offset": 0, @@ -46976,19 +1594,7 @@ "type": "t_uint256" }, { -<<<<<<< Updated upstream - "astId": 93584, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "astId": 93584, -======= - "astId": 125529, ->>>>>>> Stashed changes -======= - "astId": 125529, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "astId": 86828, "contract": "src/RNSDomainPrice.sol:RNSDomainPrice", "label": "timestamp", "offset": 0, @@ -47019,19 +1625,7 @@ } } }, -<<<<<<< Updated upstream - "timestamp": 1708497365, -======= -<<<<<<< Updated upstream -<<<<<<< Updated upstream - "timestamp": 1708497365, -======= - "timestamp": 1710234885, ->>>>>>> Stashed changes -======= - "timestamp": 1710234885, ->>>>>>> Stashed changes ->>>>>>> Stashed changes + "timestamp": 1719291706, "userdoc": { "version": 1, "kind": "user", diff --git a/deployments/ronin-testnet/RONRegistrarControllerLogic.json b/deployments/ronin-testnet/RONRegistrarControllerLogic.json index f3853745..80b89bed 100644 --- a/deployments/ronin-testnet/RONRegistrarControllerLogic.json +++ b/deployments/ronin-testnet/RONRegistrarControllerLogic.json @@ -1,15737 +1,1192 @@ { "abi": [ { + "type": "constructor", "inputs": [], - "stateMutability": "payable", - "type": "constructor" + "stateMutability": "payable" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" - } - ], - "name": "CommitmentTooNew", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" - } - ], - "name": "CommitmentTooOld", - "type": "error" - }, - { - "inputs": [ + "type": "function", + "name": "DEFAULT_ADMIN_ROLE", + "inputs": [], + "outputs": [ { - "internalType": "uint64", - "name": "duration", - "type": "uint64" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "DurationTooShort", - "type": "error" + "stateMutability": "view" }, { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "address", - "name": "requestOwner", - "type": "address" - }, - { - "internalType": "bool", - "name": "nameProtected", - "type": "bool" - }, + "type": "function", + "name": "MIN_DOMAIN_LENGTH", + "inputs": [], + "outputs": [ { - "internalType": "bool", - "name": "ownerWhitelisted", - "type": "bool" + "name": "", + "type": "uint8", + "internalType": "uint8" } ], - "name": "ErrInvalidRegisterProtectedName", - "type": "error" + "stateMutability": "view" }, { - "inputs": [ + "type": "function", + "name": "OPERATOR_ROLE", + "inputs": [], + "outputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "ErrRequestedForProtectedName", - "type": "error" - }, - { - "inputs": [], - "name": "InsufficientValue", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidArrayLength", - "type": "error" - }, - { - "inputs": [], - "name": "MaxCommitmentAgeTooHigh", - "type": "error" + "stateMutability": "view" }, { + "type": "function", + "name": "PAUSER_ROLE", "inputs": [], - "name": "MaxCommitmentAgeTooLow", - "type": "error" - }, - { - "inputs": [ + "outputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "NameNotAvailable", - "type": "error" - }, - { - "inputs": [], - "name": "ResolverRequiredWhenDataSupplied", - "type": "error" + "stateMutability": "view" }, { + "type": "function", + "name": "available", "inputs": [ { - "internalType": "bytes32", - "name": "node", - "type": "bytes32" + "name": "name", + "type": "string", + "internalType": "string" } ], - "name": "Unauthorized", - "type": "error" - }, - { - "inputs": [ + "outputs": [ { - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" + "name": "", + "type": "bool", + "internalType": "bool" } ], - "name": "UnexpiredCommitmentExists", - "type": "error" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "bulkWhitelistProtectedNames", "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" + "name": "ids", + "type": "uint256[]", + "internalType": "uint256[]" }, { - "indexed": false, - "internalType": "uint256", - "name": "minCommitmentAge", - "type": "uint256" + "name": "owners", + "type": "address[]", + "internalType": "address[]" }, { - "indexed": false, - "internalType": "uint256", - "name": "maxCommitmentAge", - "type": "uint256" + "name": "status", + "type": "bool", + "internalType": "bool" } ], - "name": "CommitmentAgeUpdated", - "type": "event" + "outputs": [], + "stateMutability": "nonpayable" }, { - "anonymous": false, + "type": "function", + "name": "commit", "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "contract INSDomainPrice", - "name": "newDomainPrice", - "type": "address" + "name": "commitment", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "DomainPriceUpdated", - "type": "event" + "outputs": [], + "stateMutability": "nonpayable" }, { - "anonymous": false, + "type": "function", + "name": "computeCommitment", "inputs": [ { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "name": "name", + "type": "string", + "internalType": "string" + }, { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" + "name": "owner", + "type": "address", + "internalType": "address" }, { - "indexed": false, - "internalType": "uint256", "name": "duration", - "type": "uint256" - } - ], - "name": "MinRegistrationDurationUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "name", - "type": "string" + "type": "uint64", + "internalType": "uint64" }, { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" + "name": "secret", + "type": "bytes32", + "internalType": "bytes32" }, { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" + "name": "resolver", + "type": "address", + "internalType": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "ronPrice", - "type": "uint256" + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" }, { - "indexed": false, - "internalType": "uint256", - "name": "usdPrice", - "type": "uint256" - }, + "name": "reverseRecord", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [ { - "indexed": false, - "internalType": "uint64", - "name": "expires", - "type": "uint64" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "NameRegistered", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "computeId", "inputs": [ { - "indexed": false, - "internalType": "string", "name": "name", - "type": "string" - }, + "type": "string", + "internalType": "string" + } + ], + "outputs": [ { - "indexed": true, - "internalType": "uint256", "name": "id", - "type": "uint256" - }, + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "getCommitmentAgeRange", + "inputs": [], + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "cost", - "type": "uint256" + "name": "minCommitmentAge", + "type": "uint256", + "internalType": "uint256" }, { - "indexed": false, - "internalType": "uint64", - "name": "expires", - "type": "uint64" + "name": "maxCommitmentAge", + "type": "uint256", + "internalType": "uint256" } ], - "name": "NameRenewed", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ + "type": "function", + "name": "getMinRegistrationDuration", + "inputs": [], + "outputs": [ { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" + "name": "", + "type": "uint256", + "internalType": "uint256" } ], - "name": "Paused", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "address[]", - "name": "owners", - "type": "address[]" - }, + "type": "function", + "name": "getNameChecker", + "inputs": [], + "outputs": [ { - "indexed": false, - "internalType": "bool", - "name": "status", - "type": "bool" + "name": "", + "type": "address", + "internalType": "contract INameChecker" } ], - "name": "ProtectedNamesWhitelisted", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ + "type": "function", + "name": "getPriceOracle", + "inputs": [], + "outputs": [ { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, + "name": "", + "type": "address", + "internalType": "contract INSDomainPrice" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getRNSUnified", + "inputs": [], + "outputs": [ { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, + "name": "", + "type": "address", + "internalType": "contract INSUnified" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getReverseRegistrar", + "inputs": [], + "outputs": [ { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" + "name": "", + "type": "address", + "internalType": "contract INSReverseRegistrar" } ], - "name": "RoleAdminChanged", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "getRoleAdmin", "inputs": [ { - "indexed": true, - "internalType": "bytes32", "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "RoleGranted", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "getRoleMember", "inputs": [ { - "indexed": true, - "internalType": "bytes32", "name": "role", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" + "name": "", + "type": "address", + "internalType": "address" } ], - "name": "RoleRevoked", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "getRoleMemberCount", "inputs": [ { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" } ], - "name": "Unpaused", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { - "internalType": "bytes32", "name": "", - "type": "bytes32" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "getTreasury", "inputs": [], - "name": "MIN_DOMAIN_LENGTH", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], - "name": "OPERATOR_ROLE", + "type": "function", + "name": "getWhitelistProtectedNameStatus", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], "outputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "name": "status", + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], - "name": "PAUSER_ROLE", - "outputs": [ + "type": "function", + "name": "grantRole", + "inputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "hasRole", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" } ], - "name": "available", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "initialize", "inputs": [ { - "internalType": "uint256[]", - "name": "ids", - "type": "uint256[]" + "name": "admin", + "type": "address", + "internalType": "address" }, { - "internalType": "address[]", - "name": "owners", - "type": "address[]" + "name": "pauser", + "type": "address", + "internalType": "address" }, { - "internalType": "bool", - "name": "status", - "type": "bool" + "name": "treasury", + "type": "address", + "internalType": "address payable" + }, + { + "name": "maxCommitmentAge", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minCommitmentAge", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minRegistrationDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "rnsUnified", + "type": "address", + "internalType": "contract INSUnified" + }, + { + "name": "nameChecker", + "type": "address", + "internalType": "contract INameChecker" + }, + { + "name": "priceOracle", + "type": "address", + "internalType": "contract INSDomainPrice" + }, + { + "name": "reverseRegistrar", + "type": "address", + "internalType": "contract INSReverseRegistrar" } ], - "name": "bulkWhitelistProtectedNames", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { - "inputs": [ + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ { - "internalType": "bytes32", - "name": "commitment", - "type": "bytes32" + "name": "", + "type": "bool", + "internalType": "bool" } ], - "name": "commit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "register", "inputs": [ { - "internalType": "string", "name": "name", - "type": "string" + "type": "string", + "internalType": "string" }, { - "internalType": "address", "name": "owner", - "type": "address" + "type": "address", + "internalType": "address" }, { - "internalType": "uint64", "name": "duration", - "type": "uint64" + "type": "uint64", + "internalType": "uint64" }, { - "internalType": "bytes32", "name": "secret", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "address", "name": "resolver", - "type": "address" + "type": "address", + "internalType": "address" }, { - "internalType": "bytes[]", "name": "data", - "type": "bytes[]" + "type": "bytes[]", + "internalType": "bytes[]" }, { - "internalType": "bool", "name": "reverseRecord", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "name": "computeCommitment", - "outputs": [ + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "registerProtectedName", + "inputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "duration", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "resolver", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "reverseRecord", + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "payable" }, { + "type": "function", + "name": "renew", "inputs": [ { - "internalType": "string", "name": "name", - "type": "string" - } - ], - "name": "computeId", - "outputs": [ + "type": "string", + "internalType": "string" + }, { - "internalType": "uint256", - "name": "id", - "type": "uint256" + "name": "duration", + "type": "uint64", + "internalType": "uint64" } ], - "stateMutability": "pure", - "type": "function" + "outputs": [], + "stateMutability": "payable" }, { - "inputs": [], - "name": "getCommitmentAgeRange", - "outputs": [ + "type": "function", + "name": "renounceRole", + "inputs": [ { - "internalType": "uint256", - "name": "minCommitmentAge", - "type": "uint256" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "uint256", - "name": "maxCommitmentAge", - "type": "uint256" + "name": "account", + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { - "inputs": [], - "name": "getMinRegistrationDuration", - "outputs": [ + "type": "function", + "name": "rentPrice", + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "duration", + "type": "uint64", + "internalType": "uint64" } ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNameChecker", "outputs": [ { - "internalType": "contract INameChecker", - "name": "", - "type": "address" + "name": "usdPrice", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "ronPrice", + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], - "name": "getPriceOracle", - "outputs": [ + "type": "function", + "name": "revokeRole", + "inputs": [ { - "internalType": "contract INSDomainPrice", - "name": "", - "type": "address" + "name": "role", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "account", + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { - "inputs": [], - "name": "getRNSUnified", - "outputs": [ + "type": "function", + "name": "setCommitmentAge", + "inputs": [ { - "internalType": "contract INSUnified", - "name": "", - "type": "address" + "name": "minCommitmentAge", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxCommitmentAge", + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { - "inputs": [], - "name": "getReverseRegistrar", - "outputs": [ + "type": "function", + "name": "setMinRegistrationDuration", + "inputs": [ { - "internalType": "contract INSReverseRegistrar", - "name": "", - "type": "address" + "name": "duration", + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "setPriceOracle", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + "name": "priceOracle", + "type": "address", + "internalType": "contract INSDomainPrice" } ], - "name": "getRoleAdmin", - "outputs": [ + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setTreasury", + "inputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "name": "addr", + "type": "address", + "internalType": "address payable" } ], - "stateMutability": "view", - "type": "function" + "outputs": [], + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "supportsInterface", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" } ], - "name": "getRoleMember", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" + }, + { + "type": "function", + "name": "unpause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "valid", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + "name": "name", + "type": "string", + "internalType": "string" } ], - "name": "getRoleMemberCount", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], - "name": "getTreasury", - "outputs": [ + "type": "event", + "name": "CommitmentAgeUpdated", + "inputs": [ { - "internalType": "address", - "name": "", - "type": "address" + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "minCommitmentAge", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "maxCommitmentAge", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "DomainPriceUpdated", "inputs": [ { - "internalType": "uint256", - "name": "id", - "type": "uint256" + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "getWhitelistProtectedNameStatus", - "outputs": [ - { - "internalType": "bool", - "name": "status", - "type": "bool" + "name": "newDomainPrice", + "type": "address", + "indexed": false, + "internalType": "contract INSDomainPrice" } ], - "stateMutability": "view", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "Initialized", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" } ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "MinRegistrationDurationUpdated", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "duration", + "type": "uint256", + "indexed": false, + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "NameRegistered", "inputs": [ { - "internalType": "address", - "name": "admin", - "type": "address" + "name": "name", + "type": "string", + "indexed": false, + "internalType": "string" }, { - "internalType": "address", - "name": "pauser", - "type": "address" + "name": "id", + "type": "uint256", + "indexed": true, + "internalType": "uint256" }, { - "internalType": "address payable", - "name": "treasury", - "type": "address" + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "uint256", - "name": "maxCommitmentAge", - "type": "uint256" + "name": "ronPrice", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, { - "internalType": "uint256", - "name": "minCommitmentAge", - "type": "uint256" + "name": "usdPrice", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, { - "internalType": "uint256", - "name": "minRegistrationDuration", - "type": "uint256" - }, + "name": "expires", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NameRenewed", + "inputs": [ { - "internalType": "contract INSUnified", - "name": "rnsUnified", - "type": "address" + "name": "name", + "type": "string", + "indexed": false, + "internalType": "string" }, { - "internalType": "contract INameChecker", - "name": "nameChecker", - "type": "address" + "name": "id", + "type": "uint256", + "indexed": true, + "internalType": "uint256" }, { - "internalType": "contract INSDomainPrice", - "name": "priceOracle", - "type": "address" + "name": "cost", + "type": "uint256", + "indexed": false, + "internalType": "uint256" }, { - "internalType": "contract INSReverseRegistrar", - "name": "reverseRegistrar", - "type": "address" + "name": "expires", + "type": "uint64", + "indexed": false, + "internalType": "uint64" } ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false }, { - "inputs": [], - "name": "paused", - "outputs": [ + "type": "event", + "name": "Paused", + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "account", + "type": "address", + "indexed": false, + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "ProtectedNamesWhitelisted", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "operator", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "address", - "name": "owner", - "type": "address" + "name": "ids", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" }, { - "internalType": "uint64", - "name": "duration", - "type": "uint64" + "name": "owners", + "type": "address[]", + "indexed": false, + "internalType": "address[]" }, { - "internalType": "bytes32", - "name": "secret", - "type": "bytes32" - }, + "name": "status", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleAdminChanged", + "inputs": [ { - "internalType": "address", - "name": "resolver", - "type": "address" + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - "internalType": "bytes[]", - "name": "data", - "type": "bytes[]" + "name": "previousAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - "internalType": "bool", - "name": "reverseRecord", - "type": "bool" + "name": "newAdminRole", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" } ], - "name": "register", - "outputs": [], - "stateMutability": "payable", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "RoleGranted", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - "internalType": "address", - "name": "owner", - "type": "address" + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "uint64", - "name": "duration", - "type": "uint64" - }, + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RoleRevoked", + "inputs": [ { - "internalType": "address", - "name": "resolver", - "type": "address" + "name": "role", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" }, { - "internalType": "bytes[]", - "name": "data", - "type": "bytes[]" + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" }, { - "internalType": "bool", - "name": "reverseRecord", - "type": "bool" + "name": "sender", + "type": "address", + "indexed": true, + "internalType": "address" } ], - "name": "registerProtectedName", - "outputs": [], - "stateMutability": "payable", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "TreasuryUpdated", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "uint64", - "name": "duration", - "type": "uint64" + "name": "addr", + "type": "address", + "indexed": true, + "internalType": "address" } ], - "name": "renew", - "outputs": [], - "stateMutability": "payable", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "Unpaused", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", "name": "account", - "type": "address" + "type": "address", + "indexed": false, + "internalType": "address" } ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false }, { + "type": "error", + "name": "CommitmentTooNew", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "uint64", - "name": "duration", - "type": "uint64" + "name": "commitment", + "type": "bytes32", + "internalType": "bytes32" } - ], - "name": "rentPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "usdPrice", - "type": "uint256" - }, + ] + }, + { + "type": "error", + "name": "CommitmentTooOld", + "inputs": [ { - "internalType": "uint256", - "name": "ronPrice", - "type": "uint256" + "name": "commitment", + "type": "bytes32", + "internalType": "bytes32" } - ], - "stateMutability": "view", - "type": "function" + ] }, { + "type": "error", + "name": "DurationTooShort", "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" + "name": "duration", + "type": "uint64", + "internalType": "uint64" } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + ] }, { + "type": "error", + "name": "ErrInvalidRegisterProtectedName", "inputs": [ { - "internalType": "uint256", - "name": "minCommitmentAge", - "type": "uint256" + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "requestOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "nameProtected", + "type": "bool", + "internalType": "bool" }, { - "internalType": "uint256", - "name": "maxCommitmentAge", - "type": "uint256" + "name": "ownerWhitelisted", + "type": "bool", + "internalType": "bool" } - ], - "name": "setCommitmentAge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + ] }, { + "type": "error", + "name": "ErrRequestedForProtectedName", "inputs": [ { - "internalType": "uint256", - "name": "duration", - "type": "uint256" + "name": "name", + "type": "string", + "internalType": "string" } - ], - "name": "setMinRegistrationDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + ] }, { - "inputs": [ - { - "internalType": "contract INSDomainPrice", - "name": "priceOracle", - "type": "address" - } - ], - "name": "setPriceOracle", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "type": "error", + "name": "InsufficientValue", + "inputs": [] }, { - "inputs": [ - { - "internalType": "address payable", - "name": "addr", - "type": "address" - } - ], - "name": "setTreasury", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "type": "error", + "name": "InvalidArrayLength", + "inputs": [] + }, + { + "type": "error", + "name": "MaxCommitmentAgeTooHigh", + "inputs": [] + }, + { + "type": "error", + "name": "MaxCommitmentAgeTooLow", + "inputs": [] }, { + "type": "error", + "name": "NameNotAvailable", "inputs": [ { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "name", + "type": "string", + "internalType": "string" } - ], - "stateMutability": "view", - "type": "function" + ] }, { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "type": "error", + "name": "NullAddress", + "inputs": [] + }, + { + "type": "error", + "name": "ResolverRequiredWhenDataSupplied", + "inputs": [] }, { + "type": "error", + "name": "Unauthorized", "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "node", + "type": "bytes32", + "internalType": "bytes32" } - ], - "name": "valid", - "outputs": [ + ] + }, + { + "type": "error", + "name": "UnexpiredCommitmentExists", + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "commitment", + "type": "bytes32", + "internalType": "bytes32" } - ], - "stateMutability": "view", - "type": "function" + ] } ], - "address": "0x4d3a1C1C7EAe7E4e68fc0eFF8d721B0140793244", - "args": "0x", - "ast": { - "absolutePath": "src/RONRegistrarController.sol", - "id": 63921, - "exportedSymbols": { - "AccessControlEnumerable": [ - 48591 - ], - "INSDomainPrice": [ - 64599 - ], - "INSReverseRegistrar": [ - 64718 - ], - "INSUnified": [ - 64975 - ], - "INameChecker": [ - 65094 - ], - "IPublicResolver": [ - 65816 - ], - "IRONRegistrarController": [ - 65460 - ], - "Initializable": [ - 49864 - ], - "LibRNSDomain": [ - 66042 - ], - "LibString": [ - 66324 - ], - "Pausable": [ - 49972 - ], - "RONRegistrarController": [ - 63920 - ], - "RONTransferHelper": [ - 67444 - ], - "ReentrancyGuard": [ - 50037 - ] - }, - "nodeType": "SourceUnit", - "src": "32:14706:86", - "nodes": [ - { - "id": 62756, - "nodeType": "PragmaDirective", - "src": "32:24:86", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".19" - ] - }, - { - "id": 62758, - "nodeType": "ImportDirective", - "src": "58:73:86", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/security/Pausable.sol", - "file": "@openzeppelin/contracts/security/Pausable.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 49973, - "symbolAliases": [ - { - "foreign": { - "id": 62757, - "name": "Pausable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49972, - "src": "67:8:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62760, - "nodeType": "ImportDirective", - "src": "132:86:86", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", - "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 49865, - "symbolAliases": [ - { - "foreign": { - "id": 62759, - "name": "Initializable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49864, - "src": "141:13:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62762, - "nodeType": "ImportDirective", - "src": "219:87:86", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol", - "file": "@openzeppelin/contracts/security/ReentrancyGuard.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 50038, - "symbolAliases": [ - { - "foreign": { - "id": 62761, - "name": "ReentrancyGuard", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50037, - "src": "228:15:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62764, - "nodeType": "ImportDirective", - "src": "307:101:86", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol", - "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 48592, - "symbolAliases": [ - { - "foreign": { - "id": 62763, - "name": "AccessControlEnumerable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48591, - "src": "316:23:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62766, - "nodeType": "ImportDirective", - "src": "409:77:86", - "nodes": [], - "absolutePath": "src/interfaces/resolvers/IPublicResolver.sol", - "file": "./interfaces/resolvers/IPublicResolver.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 65817, - "symbolAliases": [ - { - "foreign": { - "id": 62765, - "name": "IPublicResolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65816, - "src": "418:15:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62772, - "nodeType": "ImportDirective", - "src": "487:156:86", - "nodes": [], - "absolutePath": "src/interfaces/IRONRegistrarController.sol", - "file": "./interfaces/IRONRegistrarController.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 65461, - "symbolAliases": [ - { - "foreign": { - "id": 62767, - "name": "INSUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64975, - "src": "498:10:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 62768, - "name": "INameChecker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65094, - "src": "512:12:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 62769, - "name": "INSDomainPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64599, - "src": "528:14:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 62770, - "name": "INSReverseRegistrar", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 64718, - "src": "546:19:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - }, - { - "foreign": { - "id": 62771, - "name": "IRONRegistrarController", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65460, - "src": "569:23:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62774, - "nodeType": "ImportDirective", - "src": "644:54:86", - "nodes": [], - "absolutePath": "src/libraries/LibString.sol", - "file": "./libraries/LibString.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 66325, - "symbolAliases": [ - { - "foreign": { - "id": 62773, - "name": "LibString", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66324, - "src": "653:9:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62776, - "nodeType": "ImportDirective", - "src": "699:60:86", - "nodes": [], - "absolutePath": "src/libraries/LibRNSDomain.sol", - "file": "./libraries/LibRNSDomain.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 66043, - "symbolAliases": [ - { - "foreign": { - "id": 62775, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66042, - "src": "708:12:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 62778, - "nodeType": "ImportDirective", - "src": "760:80:86", - "nodes": [], - "absolutePath": "src/libraries/transfers/RONTransferHelper.sol", - "file": "./libraries/transfers/RONTransferHelper.sol", - "nameLocation": "-1:-1:-1", - "scope": 63921, - "sourceUnit": 67445, - "symbolAliases": [ - { - "foreign": { - "id": 62777, - "name": "RONTransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67444, - "src": "769:17:86", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 63920, - "nodeType": "ContractDefinition", - "src": "1161:13576:86", - "nodes": [ - { - "id": 62792, - "nodeType": "UsingForDirective", - "src": "1301:27:86", - "nodes": [], - "global": false, - "libraryName": { - "id": 62790, - "name": "LibString", - "nameLocations": [ - "1307:9:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66324, - "src": "1307:9:86" - }, - "typeName": { - "id": 62791, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1321:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - } - }, - { - "id": 62795, - "nodeType": "UsingForDirective", - "src": "1331:30:86", - "nodes": [], - "global": false, - "libraryName": { - "id": 62793, - "name": "LibRNSDomain", - "nameLocations": [ - "1337:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 66042, - "src": "1337:12:86" - }, - "typeName": { - "id": 62794, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1354:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - } - }, - { - "id": 62799, - "nodeType": "VariableDeclaration", - "src": "1409:43:86", - "nodes": [], - "baseFunctions": [ - 65417 - ], - "constant": true, - "documentation": { - "id": 62796, - "nodeType": "StructuredDocumentation", - "src": "1365:41:86", - "text": "@dev The minimum domain name's length" - }, - "functionSelector": "29aa4f51", - "mutability": "constant", - "name": "MIN_DOMAIN_LENGTH", - "nameLocation": "1431:17:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 62797, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1409:5:86", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "hexValue": "33", - "id": 62798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1451:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "visibility": "public" - }, - { - "id": 62805, - "nodeType": "VariableDeclaration", - "src": "1498:62:86", - "nodes": [], - "baseFunctions": [ - 65405 - ], - "constant": true, - "documentation": { - "id": 62800, - "nodeType": "StructuredDocumentation", - "src": "1456:39:86", - "text": "@inheritdoc IRONRegistrarController" - }, - "functionSelector": "e63ab1e9", - "mutability": "constant", - "name": "PAUSER_ROLE", - "nameLocation": "1522:11:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62801, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1498:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "5041555345525f524f4c45", - "id": 62803, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1546:13:86", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", - "typeString": "literal_string \"PAUSER_ROLE\"" - }, - "value": "PAUSER_ROLE" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", - "typeString": "literal_string \"PAUSER_ROLE\"" - } - ], - "id": 62802, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1536:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 62804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1536:24:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "id": 62811, - "nodeType": "VariableDeclaration", - "src": "1606:66:86", - "nodes": [], - "baseFunctions": [ - 65411 - ], - "constant": true, - "documentation": { - "id": 62806, - "nodeType": "StructuredDocumentation", - "src": "1564:39:86", - "text": "@inheritdoc IRONRegistrarController" - }, - "functionSelector": "f5b541a6", - "mutability": "constant", - "name": "OPERATOR_ROLE", - "nameLocation": "1630:13:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 62807, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1606:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": { - "arguments": [ - { - "hexValue": "4f50455241544f525f524f4c45", - "id": 62809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1656:15:86", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929", - "typeString": "literal_string \"OPERATOR_ROLE\"" - }, - "value": "OPERATOR_ROLE" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929", - "typeString": "literal_string \"OPERATOR_ROLE\"" - } - ], - "id": 62808, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1646:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 62810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1646:26:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "public" - }, - { - "id": 62816, - "nodeType": "VariableDeclaration", - "src": "1712:27:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62812, - "nodeType": "StructuredDocumentation", - "src": "1677:32:86", - "text": "@dev Gap for upgradeability." - }, - "mutability": "mutable", - "name": "____gap", - "nameLocation": "1732:7:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$50_storage", - "typeString": "uint256[50]" - }, - "typeName": { - "baseType": { - "id": 62813, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1712:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 62815, - "length": { - "hexValue": "3530", - "id": 62814, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1720:2:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_50_by_1", - "typeString": "int_const 50" - }, - "value": "50" - }, - "nodeType": "ArrayTypeName", - "src": "1712:11:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr", - "typeString": "uint256[50]" - } - }, - "visibility": "private" - }, - { - "id": 62819, - "nodeType": "VariableDeclaration", - "src": "1822:34:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62817, - "nodeType": "StructuredDocumentation", - "src": "1744:75:86", - "text": "@dev Minimum duration between commitment and registration in second(s)." - }, - "mutability": "mutable", - "name": "_minCommitmentAge", - "nameLocation": "1839:17:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62818, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1822:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "id": 62822, - "nodeType": "VariableDeclaration", - "src": "1938:34:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62820, - "nodeType": "StructuredDocumentation", - "src": "1860:75:86", - "text": "@dev Maximum duration between commitment and registration in second(s)." - }, - "mutability": "mutable", - "name": "_maxCommitmentAge", - "nameLocation": "1955:17:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62821, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1938:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "id": 62825, - "nodeType": "VariableDeclaration", - "src": "2013:41:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62823, - "nodeType": "StructuredDocumentation", - "src": "1976:34:86", - "text": "@dev Min registration duration" - }, - "mutability": "mutable", - "name": "_minRegistrationDuration", - "nameLocation": "2030:24:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2013:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "id": 62828, - "nodeType": "VariableDeclaration", - "src": "2092:34:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62826, - "nodeType": "StructuredDocumentation", - "src": "2059:30:86", - "text": "@dev The treasury address." - }, - "mutability": "mutable", - "name": "_treasury", - "nameLocation": "2117:9:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 62827, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2092:15:86", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "visibility": "internal" - }, - { - "id": 62832, - "nodeType": "VariableDeclaration", - "src": "2167:31:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62829, - "nodeType": "StructuredDocumentation", - "src": "2130:34:86", - "text": "@dev The rns unified contract." - }, - "mutability": "mutable", - "name": "_rnsUnified", - "nameLocation": "2187:11:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 62831, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62830, - "name": "INSUnified", - "nameLocations": [ - "2167:10:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64975, - "src": "2167:10:86" - }, - "referencedDeclaration": 64975, - "src": "2167:10:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - }, - { - "id": 62836, - "nodeType": "VariableDeclaration", - "src": "2239:34:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62833, - "nodeType": "StructuredDocumentation", - "src": "2202:34:86", - "text": "@dev The namechecker contract." - }, - "mutability": "mutable", - "name": "_nameChecker", - "nameLocation": "2261:12:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - }, - "typeName": { - "id": 62835, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62834, - "name": "INameChecker", - "nameLocations": [ - "2239:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 65094, - "src": "2239:12:86" - }, - "referencedDeclaration": 65094, - "src": "2239:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "visibility": "internal" - }, - { - "id": 62840, - "nodeType": "VariableDeclaration", - "src": "2306:36:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62837, - "nodeType": "StructuredDocumentation", - "src": "2277:26:86", - "text": "@dev The price oracle." - }, - "mutability": "mutable", - "name": "_priceOracle", - "nameLocation": "2330:12:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - }, - "typeName": { - "id": 62839, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62838, - "name": "INSDomainPrice", - "nameLocations": [ - "2306:14:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64599, - "src": "2306:14:86" - }, - "referencedDeclaration": 64599, - "src": "2306:14:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "visibility": "internal" - }, - { - "id": 62844, - "nodeType": "VariableDeclaration", - "src": "2389:46:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62841, - "nodeType": "StructuredDocumentation", - "src": "2346:40:86", - "text": "@dev The reverse registrar contract." - }, - "mutability": "mutable", - "name": "_reverseRegistrar", - "nameLocation": "2418:17:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - }, - "typeName": { - "id": 62843, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62842, - "name": "INSReverseRegistrar", - "nameLocations": [ - "2389:19:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64718, - "src": "2389:19:86" - }, - "referencedDeclaration": 64718, - "src": "2389:19:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "visibility": "internal" - }, - { - "id": 62849, - "nodeType": "VariableDeclaration", - "src": "2515:70:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62845, - "nodeType": "StructuredDocumentation", - "src": "2440:72:86", - "text": "@dev Mapping from commitment hash => timestamp that commitment made." - }, - "mutability": "mutable", - "name": "_committedAt", - "nameLocation": "2573:12:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "typeName": { - "id": 62848, - "keyName": "commitment", - "keyNameLocation": "2531:10:86", - "keyType": { - "id": 62846, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2523:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "2515:48:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - }, - "valueName": "timestamp", - "valueNameLocation": "2553:9:86", - "valueType": { - "id": 62847, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2545:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "internal" - }, - { - "id": 62856, - "nodeType": "VariableDeclaration", - "src": "2694:89:86", - "nodes": [], - "constant": false, - "documentation": { - "id": 62850, - "nodeType": "StructuredDocumentation", - "src": "2589:102:86", - "text": "@dev Mapping id => owner => flag indicating whether the owner is whitelisted to buy protected name" - }, - "mutability": "mutable", - "name": "_protectedNamesWhitelisted", - "nameLocation": "2757:26:86", - "scope": 63920, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(uint256 => mapping(address => bool))" - }, - "typeName": { - "id": 62855, - "keyName": "id", - "keyNameLocation": "2710:2:86", - "keyType": { - "id": 62851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2702:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "2694:53:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(uint256 => mapping(address => bool))" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 62854, - "keyName": "owner", - "keyNameLocation": "2732:5:86", - "keyType": { - "id": 62852, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2724:7:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "2716:30:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 62853, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2741:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "visibility": "internal" - }, - { - "id": 62866, - "nodeType": "ModifierDefinition", - "src": "2788:84:86", - "nodes": [], - "body": { - "id": 62865, - "nodeType": "Block", - "src": "2831:41:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 62861, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62858, - "src": "2855:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 62860, - "name": "_requireAvailable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63919, - "src": "2837:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) view" - } - }, - "id": 62862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2837:23:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62863, - "nodeType": "ExpressionStatement", - "src": "2837:23:86" - }, - { - "id": 62864, - "nodeType": "PlaceholderStatement", - "src": "2866:1:86" - } - ] - }, - "name": "onlyAvailable", - "nameLocation": "2797:13:86", - "parameters": { - "id": 62859, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62858, - "mutability": "mutable", - "name": "name", - "nameLocation": "2825:4:86", - "nodeType": "VariableDeclaration", - "scope": 62866, - "src": "2811:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 62857, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2811:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2810:20:86" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 62873, - "nodeType": "FunctionDefinition", - "src": "2876:55:86", - "nodes": [], - "body": { - "id": 62872, - "nodeType": "Block", - "src": "2898:33:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62869, - "name": "_disableInitializers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49845, - "src": "2904:20:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 62870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2904:22:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62871, - "nodeType": "ExpressionStatement", - "src": "2904:22:86" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 62867, - "nodeType": "ParameterList", - "parameters": [], - "src": "2887:2:86" - }, - "returnParameters": { - "id": 62868, - "nodeType": "ParameterList", - "parameters": [], - "src": "2898:0:86" - }, - "scope": 63920, - "stateMutability": "payable", - "virtual": false, - "visibility": "public" - }, - { - "id": 62942, - "nodeType": "FunctionDefinition", - "src": "2935:710:86", - "nodes": [], - "body": { - "id": 62941, - "nodeType": "Block", - "src": "3277:368:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 62903, - "name": "PAUSER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62805, - "src": "3294:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 62904, - "name": "pauser", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62877, - "src": "3307:6:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 62902, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48374, - "src": "3283:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 62905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3283:31:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62906, - "nodeType": "ExpressionStatement", - "src": "3283:31:86" - }, - { - "expression": { - "arguments": [ - { - "id": 62908, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48178, - "src": "3331:18:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 62909, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62875, - "src": "3351:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 62907, - "name": "_setupRole", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48374, - "src": "3320:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", - "typeString": "function (bytes32,address)" - } - }, - "id": 62910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3320:37:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62911, - "nodeType": "ExpressionStatement", - "src": "3320:37:86" - }, - { - "expression": { - "arguments": [ - { - "id": 62913, - "name": "priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62894, - "src": "3380:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - ], - "id": 62912, - "name": "_setPriceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63903, - "src": "3364:15:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_INSDomainPrice_$64599_$returns$__$", - "typeString": "function (contract INSDomainPrice)" - } - }, - "id": 62914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3364:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62915, - "nodeType": "ExpressionStatement", - "src": "3364:28:86" - }, - { - "expression": { - "arguments": [ - { - "id": 62917, - "name": "minRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62885, - "src": "3426:23:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62916, - "name": "_setMinRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63706, - "src": "3398:27:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 62918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3398:52:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62919, - "nodeType": "ExpressionStatement", - "src": "3398:52:86" - }, - { - "expression": { - "arguments": [ - { - "id": 62921, - "name": "minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62883, - "src": "3474:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 62922, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62881, - "src": "3492:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 62920, - "name": "_setCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63565, - "src": "3456:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 62923, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3456:53:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62924, - "nodeType": "ExpressionStatement", - "src": "3456:53:86" - }, - { - "expression": { - "id": 62927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62925, - "name": "_treasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62828, - "src": "3516:9:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62926, - "name": "treasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62879, - "src": "3528:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "3516:20:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 62928, - "nodeType": "ExpressionStatement", - "src": "3516:20:86" - }, - { - "expression": { - "id": 62931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62929, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "3542:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62930, - "name": "rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62888, - "src": "3556:10:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "src": "3542:24:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 62932, - "nodeType": "ExpressionStatement", - "src": "3542:24:86" - }, - { - "expression": { - "id": 62935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62933, - "name": "_nameChecker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62836, - "src": "3572:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62934, - "name": "nameChecker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62891, - "src": "3587:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "src": "3572:26:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "id": 62936, - "nodeType": "ExpressionStatement", - "src": "3572:26:86" - }, - { - "expression": { - "id": 62939, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62937, - "name": "_reverseRegistrar", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62844, - "src": "3604:17:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 62938, - "name": "reverseRegistrar", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62897, - "src": "3624:16:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "src": "3604:36:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "id": 62940, - "nodeType": "ExpressionStatement", - "src": "3604:36:86" - } - ] - }, - "functionSelector": "64c65705", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 62900, - "kind": "modifierInvocation", - "modifierName": { - "id": 62899, - "name": "initializer", - "nameLocations": [ - "3265:11:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49766, - "src": "3265:11:86" - }, - "nodeType": "ModifierInvocation", - "src": "3265:11:86" - } - ], - "name": "initialize", - "nameLocation": "2944:10:86", - "parameters": { - "id": 62898, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62875, - "mutability": "mutable", - "name": "admin", - "nameLocation": "2968:5:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "2960:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62874, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2960:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62877, - "mutability": "mutable", - "name": "pauser", - "nameLocation": "2987:6:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "2979:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 62876, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2979:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62879, - "mutability": "mutable", - "name": "treasury", - "nameLocation": "3015:8:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "2999:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 62878, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2999:15:86", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62881, - "mutability": "mutable", - "name": "maxCommitmentAge", - "nameLocation": "3037:16:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3029:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62880, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3029:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62883, - "mutability": "mutable", - "name": "minCommitmentAge", - "nameLocation": "3067:16:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3059:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62882, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3059:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62885, - "mutability": "mutable", - "name": "minRegistrationDuration", - "nameLocation": "3097:23:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3089:31:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62884, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3089:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62888, - "mutability": "mutable", - "name": "rnsUnified", - "nameLocation": "3137:10:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3126:21:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 62887, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62886, - "name": "INSUnified", - "nameLocations": [ - "3126:10:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64975, - "src": "3126:10:86" - }, - "referencedDeclaration": 64975, - "src": "3126:10:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62891, - "mutability": "mutable", - "name": "nameChecker", - "nameLocation": "3166:11:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3153:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - }, - "typeName": { - "id": 62890, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62889, - "name": "INameChecker", - "nameLocations": [ - "3153:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 65094, - "src": "3153:12:86" - }, - "referencedDeclaration": 65094, - "src": "3153:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62894, - "mutability": "mutable", - "name": "priceOracle", - "nameLocation": "3198:11:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3183:26:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - }, - "typeName": { - "id": 62893, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62892, - "name": "INSDomainPrice", - "nameLocations": [ - "3183:14:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64599, - "src": "3183:14:86" - }, - "referencedDeclaration": 64599, - "src": "3183:14:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62897, - "mutability": "mutable", - "name": "reverseRegistrar", - "nameLocation": "3235:16:86", - "nodeType": "VariableDeclaration", - "scope": 62942, - "src": "3215:36:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - }, - "typeName": { - "id": 62896, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62895, - "name": "INSReverseRegistrar", - "nameLocations": [ - "3215:19:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64718, - "src": "3215:19:86" - }, - "referencedDeclaration": 64718, - "src": "3215:19:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "visibility": "internal" - } - ], - "src": "2954:301:86" - }, - "returnParameters": { - "id": 62901, - "nodeType": "ParameterList", - "parameters": [], - "src": "3277:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62953, - "nodeType": "FunctionDefinition", - "src": "3702:67:86", - "nodes": [], - "body": { - "id": 62952, - "nodeType": "Block", - "src": "3750:19:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62949, - "name": "_pause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49955, - "src": "3756:6:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 62950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3756:8:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62951, - "nodeType": "ExpressionStatement", - "src": "3756:8:86" - } - ] - }, - "baseFunctions": [ - 65395 - ], - "documentation": { - "id": 62943, - "nodeType": "StructuredDocumentation", - "src": "3649:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "8456cb59", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 62946, - "name": "PAUSER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62805, - "src": "3737:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 62947, - "kind": "modifierInvocation", - "modifierName": { - "id": 62945, - "name": "onlyRole", - "nameLocations": [ - "3728:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "3728:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "3728:21:86" - } - ], - "name": "pause", - "nameLocation": "3711:5:86", - "parameters": { - "id": 62944, - "nodeType": "ParameterList", - "parameters": [], - "src": "3716:2:86" - }, - "returnParameters": { - "id": 62948, - "nodeType": "ParameterList", - "parameters": [], - "src": "3750:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62964, - "nodeType": "FunctionDefinition", - "src": "3826:71:86", - "nodes": [], - "body": { - "id": 62963, - "nodeType": "Block", - "src": "3876:21:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 62960, - "name": "_unpause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 49971, - "src": "3882:8:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 62961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3882:10:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 62962, - "nodeType": "ExpressionStatement", - "src": "3882:10:86" - } - ] - }, - "baseFunctions": [ - 65399 - ], - "documentation": { - "id": 62954, - "nodeType": "StructuredDocumentation", - "src": "3773:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "3f4ba83a", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 62957, - "name": "PAUSER_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62805, - "src": "3863:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 62958, - "kind": "modifierInvocation", - "modifierName": { - "id": 62956, - "name": "onlyRole", - "nameLocations": [ - "3854:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "3854:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "3854:21:86" - } - ], - "name": "unpause", - "nameLocation": "3835:7:86", - "parameters": { - "id": 62955, - "nodeType": "ParameterList", - "parameters": [], - "src": "3842:2:86" - }, - "returnParameters": { - "id": 62959, - "nodeType": "ParameterList", - "parameters": [], - "src": "3876:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 62973, - "nodeType": "FunctionDefinition", - "src": "3954:110:86", - "nodes": [], - "body": { - "id": 62972, - "nodeType": "Block", - "src": "4022:42:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 62970, - "name": "_minRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62825, - "src": "4035:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 62969, - "id": 62971, - "nodeType": "Return", - "src": "4028:31:86" - } - ] - }, - "baseFunctions": [ - 65423 - ], - "documentation": { - "id": 62965, - "nodeType": "StructuredDocumentation", - "src": "3901:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "42c20288", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getMinRegistrationDuration", - "nameLocation": "3963:26:86", - "parameters": { - "id": 62966, - "nodeType": "ParameterList", - "parameters": [], - "src": "3989:2:86" - }, - "returnParameters": { - "id": 62969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62968, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 62973, - "src": "4013:7:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62967, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4013:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4012:9:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 63016, - "nodeType": "FunctionDefinition", - "src": "4121:335:86", - "nodes": [], - "body": { - "id": 63015, - "nodeType": "Block", - "src": "4234:222:86", - "nodes": [], - "statements": [ - { - "assignments": [ - 62989, - 62992 - ], - "declarations": [ - { - "constant": false, - "id": 62989, - "mutability": "mutable", - "name": "basePrice", - "nameLocation": "4273:9:86", - "nodeType": "VariableDeclaration", - "scope": 63015, - "src": "4241:41:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 62988, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62987, - "name": "INSDomainPrice.UnitPrice", - "nameLocations": [ - "4241:14:86", - "4256:9:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64351, - "src": "4241:24:86" - }, - "referencedDeclaration": 64351, - "src": "4241:24:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_storage_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62992, - "mutability": "mutable", - "name": "tax", - "nameLocation": "4316:3:86", - "nodeType": "VariableDeclaration", - "scope": 63015, - "src": "4284:35:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - }, - "typeName": { - "id": 62991, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 62990, - "name": "INSDomainPrice.UnitPrice", - "nameLocations": [ - "4284:14:86", - "4299:9:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64351, - "src": "4284:24:86" - }, - "referencedDeclaration": 64351, - "src": "4284:24:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_storage_ptr", - "typeString": "struct INSDomainPrice.UnitPrice" - } - }, - "visibility": "internal" - } - ], - "id": 62998, - "initialValue": { - "arguments": [ - { - "id": 62995, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62976, - "src": "4356:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 62996, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62978, - "src": "4362:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 62993, - "name": "_priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62840, - "src": "4329:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "id": 62994, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4342:13:86", - "memberName": "getRenewalFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 64505, - "src": "4329:26:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_uint256_$returns$_t_struct$_UnitPrice_$64351_memory_ptr_$_t_struct$_UnitPrice_$64351_memory_ptr_$", - "typeString": "function (string memory,uint256) view external returns (struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory)" - } - }, - "id": 62997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4329:42:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_UnitPrice_$64351_memory_ptr_$_t_struct$_UnitPrice_$64351_memory_ptr_$", - "typeString": "tuple(struct INSDomainPrice.UnitPrice memory,struct INSDomainPrice.UnitPrice memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4240:131:86" - }, - { - "expression": { - "id": 63005, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 62999, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62981, - "src": "4377:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63000, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62989, - "src": "4388:9:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 63001, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4398:3:86", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 64348, - "src": "4388:13:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 63002, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62992, - "src": "4404:3:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 63003, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4408:3:86", - "memberName": "usd", - "nodeType": "MemberAccess", - "referencedDeclaration": 64348, - "src": "4404:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4388:23:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4377:34:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63006, - "nodeType": "ExpressionStatement", - "src": "4377:34:86" - }, - { - "expression": { - "id": 63013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63007, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62983, - "src": "4417:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63012, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63008, - "name": "basePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62989, - "src": "4428:9:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 63009, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4438:3:86", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 64350, - "src": "4428:13:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 63010, - "name": "tax", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62992, - "src": "4444:3:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UnitPrice_$64351_memory_ptr", - "typeString": "struct INSDomainPrice.UnitPrice memory" - } - }, - "id": 63011, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4448:3:86", - "memberName": "ron", - "nodeType": "MemberAccess", - "referencedDeclaration": 64350, - "src": "4444:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4428:23:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4417:34:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63014, - "nodeType": "ExpressionStatement", - "src": "4417:34:86" - } - ] - }, - "baseFunctions": [ - 65241 - ], - "documentation": { - "id": 62974, - "nodeType": "StructuredDocumentation", - "src": "4068:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "b24b17b0", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "rentPrice", - "nameLocation": "4130:9:86", - "parameters": { - "id": 62979, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62976, - "mutability": "mutable", - "name": "name", - "nameLocation": "4154:4:86", - "nodeType": "VariableDeclaration", - "scope": 63016, - "src": "4140:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 62975, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "4140:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62978, - "mutability": "mutable", - "name": "duration", - "nameLocation": "4167:8:86", - "nodeType": "VariableDeclaration", - "scope": 63016, - "src": "4160:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 62977, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4160:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "4139:37:86" - }, - "returnParameters": { - "id": 62984, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 62981, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "4206:8:86", - "nodeType": "VariableDeclaration", - "scope": 63016, - "src": "4198:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62980, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4198:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 62983, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "4224:8:86", - "nodeType": "VariableDeclaration", - "scope": 63016, - "src": "4216:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 62982, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4216:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4197:36:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 63037, - "nodeType": "FunctionDefinition", - "src": "4513:147:86", - "nodes": [], - "body": { - "id": 63036, - "nodeType": "Block", - "src": "4575:85:86", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 63034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 63024, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63019, - "src": "4588:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "id": 63025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4593:6:86", - "memberName": "strlen", - "nodeType": "MemberAccess", - "referencedDeclaration": 66149, - "src": "4588:11:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4588:13:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 63027, - "name": "MIN_DOMAIN_LENGTH", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62799, - "src": "4605:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4588:34:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 63033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4626:29:86", - "subExpression": { - "arguments": [ - { - "id": 63031, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63019, - "src": "4650:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 63029, - "name": "_nameChecker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62836, - "src": "4627:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "id": 63030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4640:9:86", - "memberName": "forbidden", - "nodeType": "MemberAccess", - "referencedDeclaration": 65059, - "src": "4627:22:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_bool_$", - "typeString": "function (string memory) view external returns (bool)" - } - }, - "id": 63032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4627:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4588:67:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 63023, - "id": 63035, - "nodeType": "Return", - "src": "4581:74:86" - } - ] - }, - "baseFunctions": [ - 65257 - ], - "documentation": { - "id": 63017, - "nodeType": "StructuredDocumentation", - "src": "4460:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "9791c097", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "valid", - "nameLocation": "4522:5:86", - "parameters": { - "id": 63020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63019, - "mutability": "mutable", - "name": "name", - "nameLocation": "4542:4:86", - "nodeType": "VariableDeclaration", - "scope": 63037, - "src": "4528:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63018, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "4528:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "4527:20:86" - }, - "returnParameters": { - "id": 63023, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63022, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63037, - "src": "4569:4:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63021, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4569:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4568:6:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 63057, - "nodeType": "FunctionDefinition", - "src": "4717:137:86", - "nodes": [], - "body": { - "id": 63056, - "nodeType": "Block", - "src": "4783:71:86", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 63054, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 63046, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63040, - "src": "4802:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63045, - "name": "valid", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63037, - "src": "4796:5:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$", - "typeString": "function (string memory) view returns (bool)" - } - }, - "id": 63047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4796:11:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 63051, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63040, - "src": "4843:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63050, - "name": "computeId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63128, - "src": "4833:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63052, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4833:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63048, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "4811:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 63049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4823:9:86", - "memberName": "available", - "nodeType": "MemberAccess", - "referencedDeclaration": 64853, - "src": "4811:21:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view external returns (bool)" - } - }, - "id": 63053, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4811:38:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4796:53:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 63044, - "id": 63055, - "nodeType": "Return", - "src": "4789:60:86" - } - ] - }, - "baseFunctions": [ - 65265 - ], - "documentation": { - "id": 63038, - "nodeType": "StructuredDocumentation", - "src": "4664:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "aeb8ce9b", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "available", - "nameLocation": "4726:9:86", - "parameters": { - "id": 63041, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63040, - "mutability": "mutable", - "name": "name", - "nameLocation": "4750:4:86", - "nodeType": "VariableDeclaration", - "scope": 63057, - "src": "4736:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63039, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "4736:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "4735:20:86" - }, - "returnParameters": { - "id": 63044, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63043, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63057, - "src": "4777:4:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63042, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4777:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4776:6:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 63112, - "nodeType": "FunctionDefinition", - "src": "4911:445:86", - "nodes": [], - "body": { - "id": 63111, - "nodeType": "Block", - "src": "5149:207:86", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 63091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63084, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63081, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63071, - "src": "5159:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - "id": 63082, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5164:6:86", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "5159:11:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 63083, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5174:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5159:16:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 63090, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63085, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63068, - "src": "5179:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 63088, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5199:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 63087, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5191:7:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 63086, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5191:7:86", - "typeDescriptions": {} - } - }, - "id": 63089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5191:10:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5179:22:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5159:42:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63095, - "nodeType": "IfStatement", - "src": "5155:89:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63092, - "name": "ResolverRequiredWhenDataSupplied", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65128, - "src": "5210:32:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5210:34:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63094, - "nodeType": "RevertStatement", - "src": "5203:41:86" - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 63100, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63060, - "src": "5288:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63099, - "name": "computeId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63128, - "src": "5278:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5278:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63102, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63062, - "src": "5295:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63103, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63064, - "src": "5302:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 63104, - "name": "secret", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63066, - "src": "5312:6:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 63105, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63068, - "src": "5320:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63106, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63071, - "src": "5330:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 63107, - "name": "reverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63073, - "src": "5336:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 63097, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5267:3:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 63098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5271:6:86", - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "5267:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 63108, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5267:83:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 63096, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "5257:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 63109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5257:94:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 63080, - "id": 63110, - "nodeType": "Return", - "src": "5250:101:86" - } - ] - }, - "baseFunctions": [ - 65286 - ], - "documentation": { - "id": 63058, - "nodeType": "StructuredDocumentation", - "src": "4858:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "db9bf5ed", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63076, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63060, - "src": "5125:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "id": 63077, - "kind": "modifierInvocation", - "modifierName": { - "id": 63075, - "name": "onlyAvailable", - "nameLocations": [ - "5111:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 62866, - "src": "5111:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "5111:19:86" - } - ], - "name": "computeCommitment", - "nameLocation": "4920:17:86", - "parameters": { - "id": 63074, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63060, - "mutability": "mutable", - "name": "name", - "nameLocation": "4957:4:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "4943:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63059, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "4943:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63062, - "mutability": "mutable", - "name": "owner", - "nameLocation": "4975:5:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "4967:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63061, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4967:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63064, - "mutability": "mutable", - "name": "duration", - "nameLocation": "4993:8:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "4986:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63063, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "4986:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63066, - "mutability": "mutable", - "name": "secret", - "nameLocation": "5015:6:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "5007:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63065, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5007:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63068, - "mutability": "mutable", - "name": "resolver", - "nameLocation": "5035:8:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "5027:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63067, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5027:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63071, - "mutability": "mutable", - "name": "data", - "nameLocation": "5066:4:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "5049:21:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 63069, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5049:5:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 63070, - "nodeType": "ArrayTypeName", - "src": "5049:7:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63073, - "mutability": "mutable", - "name": "reverseRecord", - "nameLocation": "5081:13:86", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "5076:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63072, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5076:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4937:161:86" - }, - "returnParameters": { - "id": 63080, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63079, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63112, - "src": "5140:7:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63078, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5140:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "5139:9:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "id": 63128, - "nodeType": "FunctionDefinition", - "src": "5413:134:86", - "nodes": [], - "body": { - "id": 63127, - "nodeType": "Block", - "src": "5485:62:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 63122, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66042, - "src": "5516:12:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$66042_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 63123, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "5529:6:86", - "memberName": "RON_ID", - "nodeType": "MemberAccess", - "referencedDeclaration": 66005, - "src": "5516:19:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63124, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63115, - "src": "5537:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 63120, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66042, - "src": "5498:12:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$66042_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 63121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5511:4:86", - "memberName": "toId", - "nodeType": "MemberAccess", - "referencedDeclaration": 66021, - "src": "5498:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (uint256,string memory) pure returns (uint256)" - } - }, - "id": 63125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5498:44:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 63119, - "id": 63126, - "nodeType": "Return", - "src": "5491:51:86" - } - ] - }, - "baseFunctions": [ - 65249 - ], - "documentation": { - "id": 63113, - "nodeType": "StructuredDocumentation", - "src": "5360:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "fb021939", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "computeId", - "nameLocation": "5422:9:86", - "parameters": { - "id": 63116, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63115, - "mutability": "mutable", - "name": "name", - "nameLocation": "5446:4:86", - "nodeType": "VariableDeclaration", - "scope": 63128, - "src": "5432:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63114, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5432:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5431:20:86" - }, - "returnParameters": { - "id": 63119, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63118, - "mutability": "mutable", - "name": "id", - "nameLocation": "5481:2:86", - "nodeType": "VariableDeclaration", - "scope": 63128, - "src": "5473:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63117, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5473:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5472:12:86" - }, - "scope": 63920, - "stateMutability": "pure", - "virtual": false, - "visibility": "public" - }, - { - "id": 63157, - "nodeType": "FunctionDefinition", - "src": "5604:231:86", - "nodes": [], - "body": { - "id": 63156, - "nodeType": "Block", - "src": "5663:172:86", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 63136, - "name": "_committedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62849, - "src": "5673:12:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 63138, - "indexExpression": { - "id": 63137, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63131, - "src": "5686:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5673:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 63139, - "name": "_maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62822, - "src": "5700:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5673:44:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "expression": { - "id": 63141, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5721:5:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 63142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5727:9:86", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5721:15:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5673:63:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63148, - "nodeType": "IfStatement", - "src": "5669:113:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63145, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63131, - "src": "5771:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 63144, - "name": "UnexpiredCommitmentExists", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65133, - "src": "5745:25:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 63146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5745:37:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63147, - "nodeType": "RevertStatement", - "src": "5738:44:86" - } - }, - { - "expression": { - "id": 63154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 63149, - "name": "_committedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62849, - "src": "5788:12:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 63151, - "indexExpression": { - "id": 63150, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63131, - "src": "5801:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5788:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 63152, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5815:5:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 63153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "5821:9:86", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5815:15:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5788:42:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63155, - "nodeType": "ExpressionStatement", - "src": "5788:42:86" - } - ] - }, - "baseFunctions": [ - 65292 - ], - "documentation": { - "id": 63129, - "nodeType": "StructuredDocumentation", - "src": "5551:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "f14fcbc8", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 63134, - "kind": "modifierInvocation", - "modifierName": { - "id": 63133, - "name": "whenNotPaused", - "nameLocations": [ - "5649:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49899, - "src": "5649:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "5649:13:86" - } - ], - "name": "commit", - "nameLocation": "5613:6:86", - "parameters": { - "id": 63132, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63131, - "mutability": "mutable", - "name": "commitment", - "nameLocation": "5628:10:86", - "nodeType": "VariableDeclaration", - "scope": 63157, - "src": "5620:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63130, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5620:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "5619:20:86" - }, - "returnParameters": { - "id": 63135, - "nodeType": "ParameterList", - "parameters": [], - "src": "5663:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63171, - "nodeType": "FunctionDefinition", - "src": "5892:140:86", - "nodes": [], - "body": { - "id": 63170, - "nodeType": "Block", - "src": "5984:48:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 63167, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63160, - "src": "6018:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63166, - "name": "_setMinRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63706, - "src": "5990:27:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 63168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5990:37:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63169, - "nodeType": "ExpressionStatement", - "src": "5990:37:86" - } - ] - }, - "baseFunctions": [ - 65342 - ], - "documentation": { - "id": 63158, - "nodeType": "StructuredDocumentation", - "src": "5839:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "c078f16a", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63163, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48178, - "src": "5964:18:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 63164, - "kind": "modifierInvocation", - "modifierName": { - "id": 63162, - "name": "onlyRole", - "nameLocations": [ - "5955:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "5955:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "5955:28:86" - } - ], - "name": "setMinRegistrationDuration", - "nameLocation": "5901:26:86", - "parameters": { - "id": 63161, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63160, - "mutability": "mutable", - "name": "duration", - "nameLocation": "5936:8:86", - "nodeType": "VariableDeclaration", - "scope": 63171, - "src": "5928:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63159, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5928:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5927:18:86" - }, - "returnParameters": { - "id": 63165, - "nodeType": "ParameterList", - "parameters": [], - "src": "5984:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63249, - "nodeType": "FunctionDefinition", - "src": "6089:783:86", - "nodes": [], - "body": { - "id": 63248, - "nodeType": "Block", - "src": "6312:560:86", - "nodes": [], - "statements": [ - { - "assignments": [ - 63195 - ], - "declarations": [ - { - "constant": false, - "id": 63195, - "mutability": "mutable", - "name": "id", - "nameLocation": "6326:2:86", - "nodeType": "VariableDeclaration", - "scope": 63248, - "src": "6318:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6318:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63199, - "initialValue": { - "arguments": [ - { - "id": 63197, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63174, - "src": "6341:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63196, - "name": "computeId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63128, - "src": "6331:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6331:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6318:28:86" - }, - { - "condition": { - "expression": { - "expression": { - "arguments": [ - { - "id": 63202, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63195, - "src": "6378:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63200, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "6356:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 63201, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6368:9:86", - "memberName": "getRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 64904, - "src": "6356:21:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Record_$64788_memory_ptr_$", - "typeString": "function (uint256) view external returns (struct INSUnified.Record memory)" - } - }, - "id": 63203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6356:25:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Record_$64788_memory_ptr", - "typeString": "struct INSUnified.Record memory" - } - }, - "id": 63204, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6382:3:86", - "memberName": "mut", - "nodeType": "MemberAccess", - "referencedDeclaration": 64787, - "src": "6356:29:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_MutableRecord_$64781_memory_ptr", - "typeString": "struct INSUnified.MutableRecord memory" - } - }, - "id": 63205, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "6386:9:86", - "memberName": "protected", - "nodeType": "MemberAccess", - "referencedDeclaration": 64780, - "src": "6356:39:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63210, - "nodeType": "IfStatement", - "src": "6352:86:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63207, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63174, - "src": "6433:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63206, - "name": "ErrRequestedForProtectedName", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65152, - "src": "6404:28:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 63208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6404:34:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63209, - "nodeType": "RevertStatement", - "src": "6397:41:86" - } - }, - { - "assignments": [ - 63212 - ], - "declarations": [ - { - "constant": false, - "id": 63212, - "mutability": "mutable", - "name": "commitHash", - "nameLocation": "6453:10:86", - "nodeType": "VariableDeclaration", - "scope": 63248, - "src": "6445:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63211, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6445:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "id": 63222, - "initialValue": { - "arguments": [ - { - "id": 63214, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63174, - "src": "6498:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63215, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63176, - "src": "6517:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63216, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63178, - "src": "6540:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 63217, - "name": "secret", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63180, - "src": "6564:6:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 63218, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63182, - "src": "6588:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63219, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63185, - "src": "6610:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 63220, - "name": "reverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63187, - "src": "6637:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63213, - "name": "computeCommitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63112, - "src": "6466:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_address_$_t_uint64_$_t_bytes32_$_t_address_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$returns$_t_bytes32_$", - "typeString": "function (string memory,address,uint64,bytes32,address,bytes calldata[] calldata,bool) view returns (bytes32)" - } - }, - "id": 63221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [ - "6492:4:86", - "6510:5:86", - "6530:8:86", - "6556:6:86", - "6578:8:86", - "6604:4:86", - "6622:13:86" - ], - "names": [ - "name", - "owner", - "duration", - "secret", - "resolver", - "data", - "reverseRecord" - ], - "nodeType": "FunctionCall", - "src": "6466:191:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6445:212:86" - }, - { - "expression": { - "arguments": [ - { - "id": 63224, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63178, - "src": "6683:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 63225, - "name": "commitHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63212, - "src": "6693:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 63223, - "name": "_validateCommitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63689, - "src": "6663:19:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_bytes32_$returns$__$", - "typeString": "function (uint64,bytes32)" - } - }, - "id": 63226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6663:41:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63227, - "nodeType": "ExpressionStatement", - "src": "6663:41:86" - }, - { - "assignments": [ - 63229, - 63231 - ], - "declarations": [ - { - "constant": false, - "id": 63229, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "6720:8:86", - "nodeType": "VariableDeclaration", - "scope": 63248, - "src": "6712:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63228, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6712:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63231, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "6738:8:86", - "nodeType": "VariableDeclaration", - "scope": 63248, - "src": "6730:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63230, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6730:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63236, - "initialValue": { - "arguments": [ - { - "id": 63233, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63174, - "src": "6763:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63234, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63178, - "src": "6769:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63232, - "name": "_handlePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63822, - "src": "6750:12:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_uint64_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (string memory,uint64) returns (uint256,uint256)" - } - }, - "id": 63235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6750:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6711:67:86" - }, - { - "expression": { - "arguments": [ - { - "id": 63238, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63174, - "src": "6794:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63239, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63176, - "src": "6800:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63240, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63178, - "src": "6807:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 63241, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63182, - "src": "6817:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63242, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63185, - "src": "6827:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 63243, - "name": "reverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63187, - "src": "6833:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 63244, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63229, - "src": "6848:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63245, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63231, - "src": "6858:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63237, - "name": "_register", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63885, - "src": "6784:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint64_$_t_address_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (string memory,address,uint64,address,bytes calldata[] calldata,bool,uint256,uint256)" - } - }, - "id": 63246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6784:83:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63247, - "nodeType": "ExpressionStatement", - "src": "6784:83:86" - } - ] - }, - "baseFunctions": [ - 65311 - ], - "documentation": { - "id": 63172, - "nodeType": "StructuredDocumentation", - "src": "6036:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "cb80fe2f", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 63190, - "kind": "modifierInvocation", - "modifierName": { - "id": 63189, - "name": "whenNotPaused", - "nameLocations": [ - "6285:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49899, - "src": "6285:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "6285:13:86" - }, - { - "id": 63192, - "kind": "modifierInvocation", - "modifierName": { - "id": 63191, - "name": "nonReentrant", - "nameLocations": [ - "6299:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50002, - "src": "6299:12:86" - }, - "nodeType": "ModifierInvocation", - "src": "6299:12:86" - } - ], - "name": "register", - "nameLocation": "6098:8:86", - "parameters": { - "id": 63188, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63174, - "mutability": "mutable", - "name": "name", - "nameLocation": "6126:4:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6112:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63173, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "6112:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63176, - "mutability": "mutable", - "name": "owner", - "nameLocation": "6144:5:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6136:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63175, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6136:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63178, - "mutability": "mutable", - "name": "duration", - "nameLocation": "6162:8:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6155:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63177, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "6155:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63180, - "mutability": "mutable", - "name": "secret", - "nameLocation": "6184:6:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6176:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63179, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6176:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63182, - "mutability": "mutable", - "name": "resolver", - "nameLocation": "6204:8:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6196:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63181, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6196:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63185, - "mutability": "mutable", - "name": "data", - "nameLocation": "6235:4:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6218:21:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 63183, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6218:5:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 63184, - "nodeType": "ArrayTypeName", - "src": "6218:7:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63187, - "mutability": "mutable", - "name": "reverseRecord", - "nameLocation": "6250:13:86", - "nodeType": "VariableDeclaration", - "scope": 63249, - "src": "6245:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63186, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6245:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6106:161:86" - }, - "returnParameters": { - "id": 63193, - "nodeType": "ParameterList", - "parameters": [], - "src": "6312:0:86" - }, - "scope": 63920, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63323, - "nodeType": "FunctionDefinition", - "src": "6929:537:86", - "nodes": [], - "body": { - "id": 63322, - "nodeType": "Block", - "src": "7027:439:86", - "nodes": [], - "statements": [ - { - "assignments": [ - null, - 63262 - ], - "declarations": [ - null, - { - "constant": false, - "id": 63262, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "7044:8:86", - "nodeType": "VariableDeclaration", - "scope": 63322, - "src": "7036:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63261, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7036:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63267, - "initialValue": { - "arguments": [ - { - "id": 63264, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63252, - "src": "7066:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - { - "id": 63265, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63254, - "src": "7072:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63263, - "name": "rentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63016, - "src": "7056:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint64_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (string memory,uint64) view returns (uint256,uint256)" - } - }, - "id": 63266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7056:25:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7033:48:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63268, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "7091:3:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 63269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7095:5:86", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "7091:9:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63270, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63262, - "src": "7103:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7091:20:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63275, - "nodeType": "IfStatement", - "src": "7087:52:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63272, - "name": "InsufficientValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65136, - "src": "7120:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7120:19:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63274, - "nodeType": "RevertStatement", - "src": "7113:26:86" - } - }, - { - "assignments": [ - 63277 - ], - "declarations": [ - { - "constant": false, - "id": 63277, - "mutability": "mutable", - "name": "remainAmount", - "nameLocation": "7153:12:86", - "nodeType": "VariableDeclaration", - "scope": 63322, - "src": "7145:20:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63276, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7145:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63282, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63281, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63278, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "7168:3:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 63279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7172:5:86", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "7168:9:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 63280, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63262, - "src": "7180:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7168:20:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7145:43:86" - }, - { - "assignments": [ - 63284 - ], - "declarations": [ - { - "constant": false, - "id": 63284, - "mutability": "mutable", - "name": "id", - "nameLocation": "7203:2:86", - "nodeType": "VariableDeclaration", - "scope": 63322, - "src": "7195:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63283, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7195:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63288, - "initialValue": { - "arguments": [ - { - "id": 63286, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63252, - "src": "7218:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - ], - "id": 63285, - "name": "computeId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63128, - "src": "7208:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63287, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7208:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7195:28:86" - }, - { - "assignments": [ - 63290 - ], - "declarations": [ - { - "constant": false, - "id": 63290, - "mutability": "mutable", - "name": "expiryTime", - "nameLocation": "7236:10:86", - "nodeType": "VariableDeclaration", - "scope": 63322, - "src": "7229:17:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63289, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "7229:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "id": 63296, - "initialValue": { - "arguments": [ - { - "id": 63293, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63284, - "src": "7267:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63294, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63254, - "src": "7271:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 63291, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "7249:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 63292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7261:5:86", - "memberName": "renew", - "nodeType": "MemberAccess", - "referencedDeclaration": 64957, - "src": "7249:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint64_$returns$_t_uint64_$", - "typeString": "function (uint256,uint64) external returns (uint64)" - } - }, - "id": 63295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7249:31:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7229:51:86" - }, - { - "eventCall": { - "arguments": [ - { - "id": 63298, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63252, - "src": "7303:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - { - "id": 63299, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63284, - "src": "7309:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63300, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63262, - "src": "7313:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63301, - "name": "expiryTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63290, - "src": "7323:10:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63297, - "name": "NameRenewed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65216, - "src": "7291:11:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint64_$returns$__$", - "typeString": "function (string memory,uint256,uint256,uint64)" - } - }, - "id": 63302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7291:43:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63303, - "nodeType": "EmitStatement", - "src": "7286:48:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63304, - "name": "remainAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63277, - "src": "7345:12:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 63305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7361:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7345:17:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63318, - "nodeType": "IfStatement", - "src": "7341:90:86", - "trueBody": { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63312, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "7403:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7403:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 63311, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7395:8:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_payable_$", - "typeString": "type(address payable)" - }, - "typeName": { - "id": 63310, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7395:8:86", - "stateMutability": "payable", - "typeDescriptions": {} - } - }, - "id": 63314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7395:21:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 63315, - "name": "remainAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63277, - "src": "7418:12:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63307, - "name": "RONTransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67444, - "src": "7364:17:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_RONTransferHelper_$67444_$", - "typeString": "type(library RONTransferHelper)" - } - }, - "id": 63309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7382:12:86", - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 67419, - "src": "7364:30:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", - "typeString": "function (address payable,uint256)" - } - }, - "id": 63316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7364:67:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63317, - "nodeType": "ExpressionStatement", - "src": "7364:67:86" - } - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63319, - "name": "_transferRONToTreasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63766, - "src": "7437:22:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 63320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7437:24:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63321, - "nodeType": "ExpressionStatement", - "src": "7437:24:86" - } - ] - }, - "baseFunctions": [ - 65319 - ], - "documentation": { - "id": 63250, - "nodeType": "StructuredDocumentation", - "src": "6876:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "5a705169", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 63257, - "kind": "modifierInvocation", - "modifierName": { - "id": 63256, - "name": "whenNotPaused", - "nameLocations": [ - "7000:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49899, - "src": "7000:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "7000:13:86" - }, - { - "id": 63259, - "kind": "modifierInvocation", - "modifierName": { - "id": 63258, - "name": "nonReentrant", - "nameLocations": [ - "7014:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50002, - "src": "7014:12:86" - }, - "nodeType": "ModifierInvocation", - "src": "7014:12:86" - } - ], - "name": "renew", - "nameLocation": "6938:5:86", - "parameters": { - "id": 63255, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63252, - "mutability": "mutable", - "name": "name", - "nameLocation": "6960:4:86", - "nodeType": "VariableDeclaration", - "scope": 63323, - "src": "6944:20:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63251, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "6944:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63254, - "mutability": "mutable", - "name": "duration", - "nameLocation": "6973:8:86", - "nodeType": "VariableDeclaration", - "scope": 63323, - "src": "6966:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63253, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "6966:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "6943:39:86" - }, - "returnParameters": { - "id": 63260, - "nodeType": "ParameterList", - "parameters": [], - "src": "7027:0:86" - }, - "scope": 63920, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63413, - "nodeType": "FunctionDefinition", - "src": "7523:732:86", - "nodes": [], - "body": { - "id": 63412, - "nodeType": "Block", - "src": "7759:496:86", - "nodes": [], - "statements": [ - { - "condition": { - "id": 63350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7769:16:86", - "subExpression": { - "arguments": [ - { - "id": 63348, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "7780:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63347, - "name": "available", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63057, - "src": "7770:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$", - "typeString": "function (string memory) view returns (bool)" - } - }, - "id": 63349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7770:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63355, - "nodeType": "IfStatement", - "src": "7765:51:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63352, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "7811:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63351, - "name": "NameNotAvailable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65120, - "src": "7794:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 63353, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7794:22:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63354, - "nodeType": "RevertStatement", - "src": "7787:29:86" - } - }, - { - "assignments": [ - 63357 - ], - "declarations": [ - { - "constant": false, - "id": 63357, - "mutability": "mutable", - "name": "id", - "nameLocation": "7830:2:86", - "nodeType": "VariableDeclaration", - "scope": 63412, - "src": "7822:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63356, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7822:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63361, - "initialValue": { - "arguments": [ - { - "id": 63359, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "7845:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63358, - "name": "computeId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63128, - "src": "7835:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (string memory) pure returns (uint256)" - } - }, - "id": 63360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7835:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7822:28:86" - }, - { - "assignments": [ - 63363 - ], - "declarations": [ - { - "constant": false, - "id": 63363, - "mutability": "mutable", - "name": "protected", - "nameLocation": "7861:9:86", - "nodeType": "VariableDeclaration", - "scope": 63412, - "src": "7856:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7856:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 63370, - "initialValue": { - "expression": { - "expression": { - "arguments": [ - { - "id": 63366, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63357, - "src": "7895:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63364, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "7873:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 63365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7885:9:86", - "memberName": "getRecord", - "nodeType": "MemberAccess", - "referencedDeclaration": 64904, - "src": "7873:21:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Record_$64788_memory_ptr_$", - "typeString": "function (uint256) view external returns (struct INSUnified.Record memory)" - } - }, - "id": 63367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7873:25:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Record_$64788_memory_ptr", - "typeString": "struct INSUnified.Record memory" - } - }, - "id": 63368, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7899:3:86", - "memberName": "mut", - "nodeType": "MemberAccess", - "referencedDeclaration": 64787, - "src": "7873:29:86", - "typeDescriptions": { - "typeIdentifier": "t_struct$_MutableRecord_$64781_memory_ptr", - "typeString": "struct INSUnified.MutableRecord memory" - } - }, - "id": 63369, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "7903:9:86", - "memberName": "protected", - "nodeType": "MemberAccess", - "referencedDeclaration": 64780, - "src": "7873:39:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7856:56:86" - }, - { - "assignments": [ - 63372 - ], - "declarations": [ - { - "constant": false, - "id": 63372, - "mutability": "mutable", - "name": "whitelisted", - "nameLocation": "7923:11:86", - "nodeType": "VariableDeclaration", - "scope": 63412, - "src": "7918:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63371, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7918:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 63378, - "initialValue": { - "baseExpression": { - "baseExpression": { - "id": 63373, - "name": "_protectedNamesWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62856, - "src": "7937:26:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(uint256 => mapping(address => bool))" - } - }, - "id": 63375, - "indexExpression": { - "id": 63374, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63357, - "src": "7964:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7937:30:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 63377, - "indexExpression": { - "id": 63376, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63328, - "src": "7968:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7937:37:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7918:56:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 63383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7984:10:86", - "subExpression": { - "id": 63379, - "name": "protected", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63363, - "src": "7985:9:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "id": 63382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "7998:12:86", - "subExpression": { - "id": 63381, - "name": "whitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63372, - "src": "7999:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "7984:26:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63391, - "nodeType": "IfStatement", - "src": "7980:107:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63385, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "8051:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63386, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63328, - "src": "8057:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63387, - "name": "protected", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63363, - "src": "8064:9:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 63388, - "name": "whitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63372, - "src": "8075:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63384, - "name": "ErrInvalidRegisterProtectedName", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65163, - "src": "8019:31:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$_t_address_$_t_bool_$_t_bool_$returns$__$", - "typeString": "function (string memory,address,bool,bool) pure" - } - }, - "id": 63389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8019:68:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63390, - "nodeType": "RevertStatement", - "src": "8012:75:86" - } - }, - { - "assignments": [ - 63393, - 63395 - ], - "declarations": [ - { - "constant": false, - "id": 63393, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "8103:8:86", - "nodeType": "VariableDeclaration", - "scope": 63412, - "src": "8095:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63392, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8095:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63395, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "8121:8:86", - "nodeType": "VariableDeclaration", - "scope": 63412, - "src": "8113:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63394, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8113:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63400, - "initialValue": { - "arguments": [ - { - "id": 63397, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "8146:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63398, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63330, - "src": "8152:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63396, - "name": "_handlePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63822, - "src": "8133:12:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_uint64_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (string memory,uint64) returns (uint256,uint256)" - } - }, - "id": 63399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8133:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8094:67:86" - }, - { - "expression": { - "arguments": [ - { - "id": 63402, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "8177:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63403, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63328, - "src": "8183:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63404, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63330, - "src": "8190:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - { - "id": 63405, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63332, - "src": "8200:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63406, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63335, - "src": "8210:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - { - "id": 63407, - "name": "reverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63337, - "src": "8216:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 63408, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63393, - "src": "8231:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63409, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63395, - "src": "8241:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63401, - "name": "_register", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63885, - "src": "8167:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$_t_uint64_$_t_address_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (string memory,address,uint64,address,bytes calldata[] calldata,bool,uint256,uint256)" - } - }, - "id": 63410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8167:83:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63411, - "nodeType": "ExpressionStatement", - "src": "8167:83:86" - } - ] - }, - "baseFunctions": [ - 65336 - ], - "documentation": { - "id": 63324, - "nodeType": "StructuredDocumentation", - "src": "7470:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "8ca3d183", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 63340, - "kind": "modifierInvocation", - "modifierName": { - "id": 63339, - "name": "whenNotPaused", - "nameLocations": [ - "7712:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49899, - "src": "7712:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "7712:13:86" - }, - { - "id": 63342, - "kind": "modifierInvocation", - "modifierName": { - "id": 63341, - "name": "nonReentrant", - "nameLocations": [ - "7726:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50002, - "src": "7726:12:86" - }, - "nodeType": "ModifierInvocation", - "src": "7726:12:86" - }, - { - "arguments": [ - { - "id": 63344, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63326, - "src": "7753:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "id": 63345, - "kind": "modifierInvocation", - "modifierName": { - "id": 63343, - "name": "onlyAvailable", - "nameLocations": [ - "7739:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 62866, - "src": "7739:13:86" - }, - "nodeType": "ModifierInvocation", - "src": "7739:19:86" - } - ], - "name": "registerProtectedName", - "nameLocation": "7532:21:86", - "parameters": { - "id": 63338, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63326, - "mutability": "mutable", - "name": "name", - "nameLocation": "7573:4:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7559:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63325, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7559:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63328, - "mutability": "mutable", - "name": "owner", - "nameLocation": "7591:5:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7583:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63327, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7583:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63330, - "mutability": "mutable", - "name": "duration", - "nameLocation": "7609:8:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7602:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63329, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "7602:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63332, - "mutability": "mutable", - "name": "resolver", - "nameLocation": "7631:8:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7623:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63331, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7623:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63335, - "mutability": "mutable", - "name": "data", - "nameLocation": "7662:4:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7645:21:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 63333, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7645:5:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 63334, - "nodeType": "ArrayTypeName", - "src": "7645:7:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63337, - "mutability": "mutable", - "name": "reverseRecord", - "nameLocation": "7677:13:86", - "nodeType": "VariableDeclaration", - "scope": 63413, - "src": "7672:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63336, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7672:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "7553:141:86" - }, - "returnParameters": { - "id": 63346, - "nodeType": "ParameterList", - "parameters": [], - "src": "7759:0:86" - }, - "scope": 63920, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63478, - "nodeType": "FunctionDefinition", - "src": "8312:475:86", - "nodes": [], - "body": { - "id": 63477, - "nodeType": "Block", - "src": "8456:331:86", - "nodes": [], - "statements": [ - { - "assignments": [ - 63429 - ], - "declarations": [ - { - "constant": false, - "id": 63429, - "mutability": "mutable", - "name": "length", - "nameLocation": "8470:6:86", - "nodeType": "VariableDeclaration", - "scope": 63477, - "src": "8462:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63428, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8462:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63432, - "initialValue": { - "expression": { - "id": 63430, - "name": "ids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63417, - "src": "8479:3:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 63431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8483:6:86", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "8479:10:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8462:27:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 63440, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63433, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63429, - "src": "8499:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 63434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8509:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "8499:11:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63436, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63429, - "src": "8514:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 63437, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63420, - "src": "8524:6:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 63438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "8531:6:86", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "8524:13:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8514:23:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8499:38:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63444, - "nodeType": "IfStatement", - "src": "8495:71:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63441, - "name": "InvalidArrayLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65166, - "src": "8546:18:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8546:20:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63443, - "nodeType": "RevertStatement", - "src": "8539:27:86" - } - }, - { - "body": { - "id": 63467, - "nodeType": "Block", - "src": "8602:109:86", - "statements": [ - { - "expression": { - "id": 63461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "id": 63451, - "name": "_protectedNamesWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62856, - "src": "8610:26:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(uint256 => mapping(address => bool))" - } - }, - "id": 63458, - "indexExpression": { - "baseExpression": { - "id": 63452, - "name": "ids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63417, - "src": "8637:3:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 63454, - "indexExpression": { - "id": 63453, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63446, - "src": "8641:1:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8637:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8610:34:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 63459, - "indexExpression": { - "baseExpression": { - "id": 63455, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63420, - "src": "8645:6:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 63457, - "indexExpression": { - "id": 63456, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63446, - "src": "8652:1:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8645:9:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8610:45:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63460, - "name": "status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63422, - "src": "8658:6:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8610:54:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63462, - "nodeType": "ExpressionStatement", - "src": "8610:54:86" - }, - { - "id": 63466, - "nodeType": "UncheckedBlock", - "src": "8673:32:86", - "statements": [ - { - "expression": { - "id": 63464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "8693:3:86", - "subExpression": { - "id": 63463, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63446, - "src": "8695:1:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63465, - "nodeType": "ExpressionStatement", - "src": "8693:3:86" - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63448, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63446, - "src": "8589:1:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63449, - "name": "length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63429, - "src": "8593:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8589:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63468, - "initializationExpression": { - "assignments": [ - 63446 - ], - "declarations": [ - { - "constant": false, - "id": 63446, - "mutability": "mutable", - "name": "i", - "nameLocation": "8586:1:86", - "nodeType": "VariableDeclaration", - "scope": 63468, - "src": "8578:9:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63445, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8578:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63447, - "nodeType": "VariableDeclarationStatement", - "src": "8578:9:86" - }, - "nodeType": "ForStatement", - "src": "8573:138:86" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63470, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "8748:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8748:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63472, - "name": "ids", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63417, - "src": "8762:3:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - { - "id": 63473, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63420, - "src": "8767:6:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - { - "id": 63474, - "name": "status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63422, - "src": "8775:6:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - }, - { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63469, - "name": "ProtectedNamesWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65229, - "src": "8722:25:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_bool_$returns$__$", - "typeString": "function (address,uint256[] memory,address[] memory,bool)" - } - }, - "id": 63475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8722:60:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63476, - "nodeType": "EmitStatement", - "src": "8717:65:86" - } - ] - }, - "baseFunctions": [ - 65362 - ], - "documentation": { - "id": 63414, - "nodeType": "StructuredDocumentation", - "src": "8259:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "6df99353", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63425, - "name": "OPERATOR_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62811, - "src": "8439:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 63426, - "kind": "modifierInvocation", - "modifierName": { - "id": 63424, - "name": "onlyRole", - "nameLocations": [ - "8430:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "8430:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "8430:23:86" - } - ], - "name": "bulkWhitelistProtectedNames", - "nameLocation": "8321:27:86", - "parameters": { - "id": 63423, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63417, - "mutability": "mutable", - "name": "ids", - "nameLocation": "8368:3:86", - "nodeType": "VariableDeclaration", - "scope": 63478, - "src": "8349:22:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 63415, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8349:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63416, - "nodeType": "ArrayTypeName", - "src": "8349:9:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63420, - "mutability": "mutable", - "name": "owners", - "nameLocation": "8392:6:86", - "nodeType": "VariableDeclaration", - "scope": 63478, - "src": "8373:25:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 63418, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8373:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 63419, - "nodeType": "ArrayTypeName", - "src": "8373:9:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63422, - "mutability": "mutable", - "name": "status", - "nameLocation": "8405:6:86", - "nodeType": "VariableDeclaration", - "scope": 63478, - "src": "8400:11:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63421, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8400:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "8348:64:86" - }, - "returnParameters": { - "id": 63427, - "nodeType": "ParameterList", - "parameters": [], - "src": "8456:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63495, - "nodeType": "FunctionDefinition", - "src": "8844:159:86", - "nodes": [], - "body": { - "id": 63494, - "nodeType": "Block", - "src": "8948:55:86", - "nodes": [], - "statements": [ - { - "expression": { - "baseExpression": { - "baseExpression": { - "id": 63488, - "name": "_protectedNamesWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62856, - "src": "8961:26:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(uint256 => mapping(address => bool))" - } - }, - "id": 63490, - "indexExpression": { - "id": 63489, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63481, - "src": "8988:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8961:30:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 63492, - "indexExpression": { - "id": 63491, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63483, - "src": "8992:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8961:37:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 63487, - "id": 63493, - "nodeType": "Return", - "src": "8954:44:86" - } - ] - }, - "baseFunctions": [ - 65372 - ], - "documentation": { - "id": 63479, - "nodeType": "StructuredDocumentation", - "src": "8791:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "3b6c2ea3", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getWhitelistProtectedNameStatus", - "nameLocation": "8853:31:86", - "parameters": { - "id": 63484, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63481, - "mutability": "mutable", - "name": "id", - "nameLocation": "8893:2:86", - "nodeType": "VariableDeclaration", - "scope": 63495, - "src": "8885:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63480, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8885:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63483, - "mutability": "mutable", - "name": "owner", - "nameLocation": "8905:5:86", - "nodeType": "VariableDeclaration", - "scope": 63495, - "src": "8897:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63482, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8897:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "8884:27:86" - }, - "returnParameters": { - "id": 63487, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63486, - "mutability": "mutable", - "name": "status", - "nameLocation": "8940:6:86", - "nodeType": "VariableDeclaration", - "scope": 63495, - "src": "8935:11:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63485, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8935:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "8934:13:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63509, - "nodeType": "FunctionDefinition", - "src": "9060:108:86", - "nodes": [], - "body": { - "id": 63508, - "nodeType": "Block", - "src": "9141:27:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63504, - "name": "_treasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62828, - "src": "9147:9:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63505, - "name": "addr", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63498, - "src": "9159:4:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "9147:16:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 63507, - "nodeType": "ExpressionStatement", - "src": "9147:16:86" - } - ] - }, - "baseFunctions": [ - 65378 - ], - "documentation": { - "id": 63496, - "nodeType": "StructuredDocumentation", - "src": "9007:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "f0f44260", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63501, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48178, - "src": "9121:18:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 63502, - "kind": "modifierInvocation", - "modifierName": { - "id": 63500, - "name": "onlyRole", - "nameLocations": [ - "9112:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "9112:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "9112:28:86" - } - ], - "name": "setTreasury", - "nameLocation": "9069:11:86", - "parameters": { - "id": 63499, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63498, - "mutability": "mutable", - "name": "addr", - "nameLocation": "9097:4:86", - "nodeType": "VariableDeclaration", - "scope": 63509, - "src": "9081:20:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 63497, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9081:15:86", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "visibility": "internal" - } - ], - "src": "9080:22:86" - }, - "returnParameters": { - "id": 63503, - "nodeType": "ParameterList", - "parameters": [], - "src": "9141:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63526, - "nodeType": "FunctionDefinition", - "src": "9225:180:86", - "nodes": [], - "body": { - "id": 63525, - "nodeType": "Block", - "src": "9341:64:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 63521, - "name": "minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63512, - "src": "9365:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63522, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63514, - "src": "9383:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63520, - "name": "_setCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63565, - "src": "9347:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 63523, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9347:53:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63524, - "nodeType": "ExpressionStatement", - "src": "9347:53:86" - } - ] - }, - "baseFunctions": [ - 65350 - ], - "documentation": { - "id": 63510, - "nodeType": "StructuredDocumentation", - "src": "9172:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "e4214b46", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63517, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48178, - "src": "9321:18:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 63518, - "kind": "modifierInvocation", - "modifierName": { - "id": 63516, - "name": "onlyRole", - "nameLocations": [ - "9312:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "9312:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "9312:28:86" - } - ], - "name": "setCommitmentAge", - "nameLocation": "9234:16:86", - "parameters": { - "id": 63515, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63512, - "mutability": "mutable", - "name": "minCommitmentAge", - "nameLocation": "9259:16:86", - "nodeType": "VariableDeclaration", - "scope": 63526, - "src": "9251:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63511, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9251:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63514, - "mutability": "mutable", - "name": "maxCommitmentAge", - "nameLocation": "9285:16:86", - "nodeType": "VariableDeclaration", - "scope": 63526, - "src": "9277:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9277:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "9250:52:86" - }, - "returnParameters": { - "id": 63519, - "nodeType": "ParameterList", - "parameters": [], - "src": "9341:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63565, - "nodeType": "FunctionDefinition", - "src": "9897:417:86", - "nodes": [], - "body": { - "id": 63564, - "nodeType": "Block", - "src": "9985:329:86", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63534, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63531, - "src": "9995:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 63535, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "10014:5:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 63536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "10020:9:86", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "10014:15:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9995:34:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63541, - "nodeType": "IfStatement", - "src": "9991:72:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63538, - "name": "MaxCommitmentAgeTooHigh", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65147, - "src": "10038:23:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10038:25:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63540, - "nodeType": "RevertStatement", - "src": "10031:32:86" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63542, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63531, - "src": "10073:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 63543, - "name": "minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63529, - "src": "10093:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10073:36:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63548, - "nodeType": "IfStatement", - "src": "10069:73:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63545, - "name": "MaxCommitmentAgeTooLow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65144, - "src": "10118:22:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10118:24:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63547, - "nodeType": "RevertStatement", - "src": "10111:31:86" - } - }, - { - "expression": { - "id": 63551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63549, - "name": "_minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62819, - "src": "10149:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63550, - "name": "minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63529, - "src": "10169:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10149:36:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63552, - "nodeType": "ExpressionStatement", - "src": "10149:36:86" - }, - { - "expression": { - "id": 63555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63553, - "name": "_maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62822, - "src": "10191:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63554, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63531, - "src": "10211:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10191:36:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63556, - "nodeType": "ExpressionStatement", - "src": "10191:36:86" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63558, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "10260:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10260:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63560, - "name": "minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63529, - "src": "10274:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63561, - "name": "maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63531, - "src": "10292:16:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63557, - "name": "CommitmentAgeUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65190, - "src": "10239:20:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 63562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10239:70:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63563, - "nodeType": "EmitStatement", - "src": "10234:75:86" - } - ] - }, - "documentation": { - "id": 63527, - "nodeType": "StructuredDocumentation", - "src": "9409:485:86", - "text": " @dev Internal function to update the commitment age range.\n Requirements:\n - The `maxCommitmentAge` must be less than or equal to the current block timestamp.\n - The `maxCommitmentAge` must be greater than the `minCommitmentAge`.\n Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\n @param minCommitmentAge The minimum commitment age in seconds.\n @param maxCommitmentAge The maximum commitment age in seconds." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setCommitmentAge", - "nameLocation": "9906:17:86", - "parameters": { - "id": 63532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63529, - "mutability": "mutable", - "name": "minCommitmentAge", - "nameLocation": "9932:16:86", - "nodeType": "VariableDeclaration", - "scope": 63565, - "src": "9924:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63528, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9924:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63531, - "mutability": "mutable", - "name": "maxCommitmentAge", - "nameLocation": "9958:16:86", - "nodeType": "VariableDeclaration", - "scope": 63565, - "src": "9950:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9950:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "9923:52:86" - }, - "returnParameters": { - "id": 63533, - "nodeType": "ParameterList", - "parameters": [], - "src": "9985:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63580, - "nodeType": "FunctionDefinition", - "src": "10371:129:86", - "nodes": [], - "body": { - "id": 63579, - "nodeType": "Block", - "src": "10461:39:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 63576, - "name": "priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63569, - "src": "10483:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - ], - "id": 63575, - "name": "_setPriceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63903, - "src": "10467:15:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_INSDomainPrice_$64599_$returns$__$", - "typeString": "function (contract INSDomainPrice)" - } - }, - "id": 63577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10467:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63578, - "nodeType": "ExpressionStatement", - "src": "10467:28:86" - } - ] - }, - "baseFunctions": [ - 65385 - ], - "documentation": { - "id": 63566, - "nodeType": "StructuredDocumentation", - "src": "10318:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "530e784f", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "id": 63572, - "name": "DEFAULT_ADMIN_ROLE", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48178, - "src": "10441:18:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "id": 63573, - "kind": "modifierInvocation", - "modifierName": { - "id": 63571, - "name": "onlyRole", - "nameLocations": [ - "10432:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48189, - "src": "10432:8:86" - }, - "nodeType": "ModifierInvocation", - "src": "10432:28:86" - } - ], - "name": "setPriceOracle", - "nameLocation": "10380:14:86", - "parameters": { - "id": 63570, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63569, - "mutability": "mutable", - "name": "priceOracle", - "nameLocation": "10410:11:86", - "nodeType": "VariableDeclaration", - "scope": 63580, - "src": "10395:26:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - }, - "typeName": { - "id": 63568, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63567, - "name": "INSDomainPrice", - "nameLocations": [ - "10395:14:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64599, - "src": "10395:14:86" - }, - "referencedDeclaration": 64599, - "src": "10395:14:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "visibility": "internal" - } - ], - "src": "10394:28:86" - }, - "returnParameters": { - "id": 63574, - "nodeType": "ParameterList", - "parameters": [], - "src": "10461:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 63589, - "nodeType": "FunctionDefinition", - "src": "10557:82:86", - "nodes": [], - "body": { - "id": 63588, - "nodeType": "Block", - "src": "10612:27:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63586, - "name": "_treasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62828, - "src": "10625:9:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "functionReturnParameters": 63585, - "id": 63587, - "nodeType": "Return", - "src": "10618:16:86" - } - ] - }, - "baseFunctions": [ - 65391 - ], - "documentation": { - "id": 63581, - "nodeType": "StructuredDocumentation", - "src": "10504:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "3b19e84a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getTreasury", - "nameLocation": "10566:11:86", - "parameters": { - "id": 63582, - "nodeType": "ParameterList", - "parameters": [], - "src": "10577:2:86" - }, - "returnParameters": { - "id": 63585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63584, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63589, - "src": "10603:7:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63583, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10603:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "10602:9:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63602, - "nodeType": "FunctionDefinition", - "src": "10696:164:86", - "nodes": [], - "body": { - "id": 63601, - "nodeType": "Block", - "src": "10804:56:86", - "nodes": [], - "statements": [ - { - "expression": { - "components": [ - { - "id": 63597, - "name": "_minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62819, - "src": "10818:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63598, - "name": "_maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62822, - "src": "10837:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 63599, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10817:38:86", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 63596, - "id": 63600, - "nodeType": "Return", - "src": "10810:45:86" - } - ] - }, - "baseFunctions": [ - 65431 - ], - "documentation": { - "id": 63590, - "nodeType": "StructuredDocumentation", - "src": "10643:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "1321889f", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getCommitmentAgeRange", - "nameLocation": "10705:21:86", - "parameters": { - "id": 63591, - "nodeType": "ParameterList", - "parameters": [], - "src": "10726:2:86" - }, - "returnParameters": { - "id": 63596, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63593, - "mutability": "mutable", - "name": "minCommitmentAge", - "nameLocation": "10760:16:86", - "nodeType": "VariableDeclaration", - "scope": 63602, - "src": "10752:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63592, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10752:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63595, - "mutability": "mutable", - "name": "maxCommitmentAge", - "nameLocation": "10786:16:86", - "nodeType": "VariableDeclaration", - "scope": 63602, - "src": "10778:24:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63594, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10778:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "10751:52:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63612, - "nodeType": "FunctionDefinition", - "src": "10917:89:86", - "nodes": [], - "body": { - "id": 63611, - "nodeType": "Block", - "src": "10977:29:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63609, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "10990:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "functionReturnParameters": 63608, - "id": 63610, - "nodeType": "Return", - "src": "10983:18:86" - } - ] - }, - "baseFunctions": [ - 65438 - ], - "documentation": { - "id": 63603, - "nodeType": "StructuredDocumentation", - "src": "10864:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "8c843314", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getRNSUnified", - "nameLocation": "10926:13:86", - "parameters": { - "id": 63604, - "nodeType": "ParameterList", - "parameters": [], - "src": "10939:2:86" - }, - "returnParameters": { - "id": 63608, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63607, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63612, - "src": "10965:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 63606, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63605, - "name": "INSUnified", - "nameLocations": [ - "10965:10:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64975, - "src": "10965:10:86" - }, - "referencedDeclaration": 64975, - "src": "10965:10:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - } - ], - "src": "10964:12:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63622, - "nodeType": "FunctionDefinition", - "src": "11063:95:86", - "nodes": [], - "body": { - "id": 63621, - "nodeType": "Block", - "src": "11128:30:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63619, - "name": "_priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62840, - "src": "11141:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "functionReturnParameters": 63618, - "id": 63620, - "nodeType": "Return", - "src": "11134:19:86" - } - ] - }, - "baseFunctions": [ - 65445 - ], - "documentation": { - "id": 63613, - "nodeType": "StructuredDocumentation", - "src": "11010:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "fca513a8", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPriceOracle", - "nameLocation": "11072:14:86", - "parameters": { - "id": 63614, - "nodeType": "ParameterList", - "parameters": [], - "src": "11086:2:86" - }, - "returnParameters": { - "id": 63618, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63617, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63622, - "src": "11112:14:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - }, - "typeName": { - "id": 63616, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63615, - "name": "INSDomainPrice", - "nameLocations": [ - "11112:14:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64599, - "src": "11112:14:86" - }, - "referencedDeclaration": 64599, - "src": "11112:14:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "visibility": "internal" - } - ], - "src": "11111:16:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63632, - "nodeType": "FunctionDefinition", - "src": "11215:93:86", - "nodes": [], - "body": { - "id": 63631, - "nodeType": "Block", - "src": "11278:30:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63629, - "name": "_nameChecker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62836, - "src": "11291:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "functionReturnParameters": 63628, - "id": 63630, - "nodeType": "Return", - "src": "11284:19:86" - } - ] - }, - "baseFunctions": [ - 65452 - ], - "documentation": { - "id": 63623, - "nodeType": "StructuredDocumentation", - "src": "11162:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "224b04de", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getNameChecker", - "nameLocation": "11224:14:86", - "parameters": { - "id": 63624, - "nodeType": "ParameterList", - "parameters": [], - "src": "11238:2:86" - }, - "returnParameters": { - "id": 63628, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63627, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63632, - "src": "11264:12:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - }, - "typeName": { - "id": 63626, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63625, - "name": "INameChecker", - "nameLocations": [ - "11264:12:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 65094, - "src": "11264:12:86" - }, - "referencedDeclaration": 65094, - "src": "11264:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INameChecker_$65094", - "typeString": "contract INameChecker" - } - }, - "visibility": "internal" - } - ], - "src": "11263:14:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63642, - "nodeType": "FunctionDefinition", - "src": "11365:110:86", - "nodes": [], - "body": { - "id": 63641, - "nodeType": "Block", - "src": "11440:35:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63639, - "name": "_reverseRegistrar", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62844, - "src": "11453:17:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "functionReturnParameters": 63638, - "id": 63640, - "nodeType": "Return", - "src": "11446:24:86" - } - ] - }, - "baseFunctions": [ - 65459 - ], - "documentation": { - "id": 63633, - "nodeType": "StructuredDocumentation", - "src": "11312:50:86", - "text": " @inheritdoc IRONRegistrarController" - }, - "functionSelector": "237a78fb", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getReverseRegistrar", - "nameLocation": "11374:19:86", - "parameters": { - "id": 63634, - "nodeType": "ParameterList", - "parameters": [], - "src": "11393:2:86" - }, - "returnParameters": { - "id": 63638, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63637, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 63642, - "src": "11419:19:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - }, - "typeName": { - "id": 63636, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63635, - "name": "INSReverseRegistrar", - "nameLocations": [ - "11419:19:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64718, - "src": "11419:19:86" - }, - "referencedDeclaration": 64718, - "src": "11419:19:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "visibility": "internal" - } - ], - "src": "11418:21:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 63689, - "nodeType": "FunctionDefinition", - "src": "11677:434:86", - "nodes": [], - "body": { - "id": 63688, - "nodeType": "Block", - "src": "11752:359:86", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63650, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63645, - "src": "11762:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63651, - "name": "_minRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62825, - "src": "11773:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11762:35:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63657, - "nodeType": "IfStatement", - "src": "11758:74:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63654, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63645, - "src": "11823:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63653, - "name": "DurationTooShort", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65125, - "src": "11806:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_uint64_$returns$__$", - "typeString": "function (uint64) pure" - } - }, - "id": 63655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11806:26:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63656, - "nodeType": "RevertStatement", - "src": "11799:33:86" - } - }, - { - "assignments": [ - 63659 - ], - "declarations": [ - { - "constant": false, - "id": 63659, - "mutability": "mutable", - "name": "passedDuration", - "nameLocation": "11847:14:86", - "nodeType": "VariableDeclaration", - "scope": 63688, - "src": "11839:22:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63658, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11839:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63666, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63660, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "11864:5:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 63661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "11870:9:86", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "11864:15:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "baseExpression": { - "id": 63662, - "name": "_committedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62849, - "src": "11882:12:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 63664, - "indexExpression": { - "id": 63663, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63647, - "src": "11895:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11882:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11864:42:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11839:67:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63667, - "name": "passedDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63659, - "src": "11916:14:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63668, - "name": "_minCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62819, - "src": "11933:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11916:34:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63674, - "nodeType": "IfStatement", - "src": "11912:75:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63671, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63647, - "src": "11976:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 63670, - "name": "CommitmentTooNew", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65110, - "src": "11959:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 63672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "11959:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63673, - "nodeType": "RevertStatement", - "src": "11952:35:86" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63675, - "name": "_maxCommitmentAge", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62822, - "src": "11997:17:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63676, - "name": "passedDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63659, - "src": "12017:14:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11997:34:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63682, - "nodeType": "IfStatement", - "src": "11993:75:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63679, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63647, - "src": "12057:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 63678, - "name": "CommitmentTooOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65115, - "src": "12040:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", - "typeString": "function (bytes32) pure" - } - }, - "id": 63680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12040:28:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63681, - "nodeType": "RevertStatement", - "src": "12033:35:86" - } - }, - { - "expression": { - "id": 63686, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "delete", - "prefix": true, - "src": "12075:31:86", - "subExpression": { - "baseExpression": { - "id": 63683, - "name": "_committedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62849, - "src": "12082:12:86", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" - } - }, - "id": 63685, - "indexExpression": { - "id": 63684, - "name": "commitment", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63647, - "src": "12095:10:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "12082:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63687, - "nodeType": "ExpressionStatement", - "src": "12075:31:86" - } - ] - }, - "documentation": { - "id": 63643, - "nodeType": "StructuredDocumentation", - "src": "11479:195:86", - "text": " @dev Validates commitment.\n Requirements:\n - The duration must larger than or equal to minimum registration duration.\n - The passed duration must in a valid range." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_validateCommitment", - "nameLocation": "11686:19:86", - "parameters": { - "id": 63648, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63645, - "mutability": "mutable", - "name": "duration", - "nameLocation": "11713:8:86", - "nodeType": "VariableDeclaration", - "scope": 63689, - "src": "11706:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63644, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "11706:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63647, - "mutability": "mutable", - "name": "commitment", - "nameLocation": "11731:10:86", - "nodeType": "VariableDeclaration", - "scope": 63689, - "src": "11723:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 63646, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "11723:7:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "11705:37:86" - }, - "returnParameters": { - "id": 63649, - "nodeType": "ParameterList", - "parameters": [], - "src": "11752:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63706, - "nodeType": "FunctionDefinition", - "src": "12288:175:86", - "nodes": [], - "body": { - "id": 63705, - "nodeType": "Block", - "src": "12352:111:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63697, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63695, - "name": "_minRegistrationDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62825, - "src": "12358:24:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63696, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63692, - "src": "12385:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12358:35:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63698, - "nodeType": "ExpressionStatement", - "src": "12358:35:86" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63700, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "12435:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63701, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12435:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63702, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63692, - "src": "12449:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63699, - "name": "MinRegistrationDurationUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65173, - "src": "12404:30:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 63703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12404:54:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63704, - "nodeType": "EmitStatement", - "src": "12399:59:86" - } - ] - }, - "documentation": { - "id": 63690, - "nodeType": "StructuredDocumentation", - "src": "12115:170:86", - "text": " @dev Sets minimum registration duration.\n Emits a {MinRegistrationDurationUpdated} event indicating the successful update of the registration duration." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setMinRegistrationDuration", - "nameLocation": "12297:27:86", - "parameters": { - "id": 63693, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63692, - "mutability": "mutable", - "name": "duration", - "nameLocation": "12333:8:86", - "nodeType": "VariableDeclaration", - "scope": 63706, - "src": "12325:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63691, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12325:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "12324:18:86" - }, - "returnParameters": { - "id": 63694, - "nodeType": "ParameterList", - "parameters": [], - "src": "12352:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63729, - "nodeType": "FunctionDefinition", - "src": "12531:175:86", - "nodes": [], - "body": { - "id": 63728, - "nodeType": "Block", - "src": "12621:85:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 63723, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63711, - "src": "12691:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 63722, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "12683:7:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes32_$", - "typeString": "type(bytes32)" - }, - "typeName": { - "id": 63721, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "12683:7:86", - "typeDescriptions": {} - } - }, - "id": 63724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12683:11:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "id": 63725, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63714, - "src": "12696:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - ], - "expression": { - "arguments": [ - { - "id": 63718, - "name": "resolverAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63709, - "src": "12643:15:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 63717, - "name": "IPublicResolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65816, - "src": "12627:15:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPublicResolver_$65816_$", - "typeString": "type(contract IPublicResolver)" - } - }, - "id": 63719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12627:32:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPublicResolver_$65816", - "typeString": "contract IPublicResolver" - } - }, - "id": 63720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12660:22:86", - "memberName": "multicallWithNodeCheck", - "nodeType": "MemberAccess", - "referencedDeclaration": 65815, - "src": "12627:55:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", - "typeString": "function (bytes32,bytes memory[] memory) external returns (bytes memory[] memory)" - } - }, - "id": 63726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12627:74:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "id": 63727, - "nodeType": "ExpressionStatement", - "src": "12627:74:86" - } - ] - }, - "documentation": { - "id": 63707, - "nodeType": "StructuredDocumentation", - "src": "12467:61:86", - "text": " @dev Sets data into resolver address contract." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setRecords", - "nameLocation": "12540:11:86", - "parameters": { - "id": 63715, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63709, - "mutability": "mutable", - "name": "resolverAddress", - "nameLocation": "12560:15:86", - "nodeType": "VariableDeclaration", - "scope": 63729, - "src": "12552:23:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63708, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12552:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63711, - "mutability": "mutable", - "name": "id", - "nameLocation": "12585:2:86", - "nodeType": "VariableDeclaration", - "scope": 63729, - "src": "12577:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12577:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63714, - "mutability": "mutable", - "name": "data", - "nameLocation": "12606:4:86", - "nodeType": "VariableDeclaration", - "scope": 63729, - "src": "12589:21:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 63712, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12589:5:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 63713, - "nodeType": "ArrayTypeName", - "src": "12589:7:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - } - ], - "src": "12551:60:86" - }, - "returnParameters": { - "id": 63716, - "nodeType": "ParameterList", - "parameters": [], - "src": "12621:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63750, - "nodeType": "FunctionDefinition", - "src": "12766:150:86", - "nodes": [], - "body": { - "id": 63749, - "nodeType": "Block", - "src": "12837:79:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 63740, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63734, - "src": "12876:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 63744, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63732, - "src": "12897:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "hexValue": "2e726f6e", - "id": 63745, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12903:6:86", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7d70d06a1900ccfa2446eb28021a437994c1f9fa73829ed90342a37408690f75", - "typeString": "literal_string \".ron\"" - }, - "value": ".ron" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_stringliteral_7d70d06a1900ccfa2446eb28021a437994c1f9fa73829ed90342a37408690f75", - "typeString": "literal_string \".ron\"" - } - ], - "expression": { - "id": 63742, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "12883:6:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_string_storage_ptr_$", - "typeString": "type(string storage pointer)" - }, - "typeName": { - "id": 63741, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "12883:6:86", - "typeDescriptions": {} - } - }, - "id": 63743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12890:6:86", - "memberName": "concat", - "nodeType": "MemberAccess", - "src": "12883:13:86", - "typeDescriptions": { - "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", - "typeString": "function () pure returns (string memory)" - } - }, - "id": 63746, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12883:27:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 63737, - "name": "_reverseRegistrar", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62844, - "src": "12843:17:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSReverseRegistrar_$64718", - "typeString": "contract INSReverseRegistrar" - } - }, - "id": 63739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "12861:14:86", - "memberName": "setNameForAddr", - "nodeType": "MemberAccess", - "referencedDeclaration": 64701, - "src": "12843:32:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$returns$_t_uint256_$", - "typeString": "function (address,string memory) external returns (uint256)" - } - }, - "id": 63747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "12843:68:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 63748, - "nodeType": "ExpressionStatement", - "src": "12843:68:86" - } - ] - }, - "documentation": { - "id": 63730, - "nodeType": "StructuredDocumentation", - "src": "12710:53:86", - "text": " @dev Sets data into reverse registrar." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setReverseRecord", - "nameLocation": "12775:17:86", - "parameters": { - "id": 63735, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63732, - "mutability": "mutable", - "name": "name", - "nameLocation": "12807:4:86", - "nodeType": "VariableDeclaration", - "scope": 63750, - "src": "12793:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63731, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "12793:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63734, - "mutability": "mutable", - "name": "owner", - "nameLocation": "12821:5:86", - "nodeType": "VariableDeclaration", - "scope": 63750, - "src": "12813:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63733, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12813:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "12792:35:86" - }, - "returnParameters": { - "id": 63736, - "nodeType": "ParameterList", - "parameters": [], - "src": "12837:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63766, - "nodeType": "FunctionDefinition", - "src": "12991:118:86", - "nodes": [], - "body": { - "id": 63765, - "nodeType": "Block", - "src": "13034:75:86", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 63757, - "name": "_treasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62828, - "src": "13071:9:86", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "expression": { - "arguments": [ - { - "id": 63760, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "13090:4:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_RONRegistrarController_$63920", - "typeString": "contract RONRegistrarController" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_RONRegistrarController_$63920", - "typeString": "contract RONRegistrarController" - } - ], - "id": 63759, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13082:7:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 63758, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13082:7:86", - "typeDescriptions": {} - } - }, - "id": 63761, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13082:13:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 63762, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13096:7:86", - "memberName": "balance", - "nodeType": "MemberAccess", - "src": "13082:21:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63754, - "name": "RONTransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67444, - "src": "13040:17:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_RONTransferHelper_$67444_$", - "typeString": "type(library RONTransferHelper)" - } - }, - "id": 63756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13058:12:86", - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 67419, - "src": "13040:30:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", - "typeString": "function (address payable,uint256)" - } - }, - "id": 63763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13040:64:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63764, - "nodeType": "ExpressionStatement", - "src": "13040:64:86" - } - ] - }, - "documentation": { - "id": 63751, - "nodeType": "StructuredDocumentation", - "src": "12920:68:86", - "text": " @dev Helper method to take fee into treasury address." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_transferRONToTreasury", - "nameLocation": "13000:22:86", - "parameters": { - "id": 63752, - "nodeType": "ParameterList", - "parameters": [], - "src": "13022:2:86" - }, - "returnParameters": { - "id": 63753, - "nodeType": "ParameterList", - "parameters": [], - "src": "13034:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63822, - "nodeType": "FunctionDefinition", - "src": "13180:433:86", - "nodes": [], - "body": { - "id": 63821, - "nodeType": "Block", - "src": "13293:320:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 63778, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63774, - "src": "13300:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63779, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63776, - "src": "13310:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 63780, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "13299:20:86", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 63782, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63769, - "src": "13332:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63783, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63771, - "src": "13338:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63781, - "name": "rentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63016, - "src": "13322:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint64_$returns$_t_uint256_$_t_uint256_$", - "typeString": "function (string memory,uint64) view returns (uint256,uint256)" - } - }, - "id": 63784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13322:25:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "src": "13299:48:86", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63786, - "nodeType": "ExpressionStatement", - "src": "13299:48:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63787, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "13357:3:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 63788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13361:5:86", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "13357:9:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 63789, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63776, - "src": "13369:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13357:20:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63794, - "nodeType": "IfStatement", - "src": "13353:52:86", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63791, - "name": "InsufficientValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65136, - "src": "13386:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 63792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13386:19:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63793, - "nodeType": "RevertStatement", - "src": "13379:26:86" - } - }, - { - "id": 63817, - "nodeType": "UncheckedBlock", - "src": "13412:166:86", - "statements": [ - { - "assignments": [ - 63796 - ], - "declarations": [ - { - "constant": false, - "id": 63796, - "mutability": "mutable", - "name": "remainAmount", - "nameLocation": "13438:12:86", - "nodeType": "VariableDeclaration", - "scope": 63817, - "src": "13430:20:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63795, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13430:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63801, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63797, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "13453:3:86", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 63798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13457:5:86", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "13453:9:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 63799, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63776, - "src": "13465:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13453:20:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13430:43:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 63802, - "name": "remainAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63796, - "src": "13485:12:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 63803, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13501:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "13485:17:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63816, - "nodeType": "IfStatement", - "src": "13481:90:86", - "trueBody": { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63810, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "13543:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63811, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13543:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 63809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13535:8:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_payable_$", - "typeString": "type(address payable)" - }, - "typeName": { - "id": 63808, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13535:8:86", - "stateMutability": "payable", - "typeDescriptions": {} - } - }, - "id": 63812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13535:21:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 63813, - "name": "remainAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63796, - "src": "13558:12:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 63805, - "name": "RONTransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67444, - "src": "13504:17:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_RONTransferHelper_$67444_$", - "typeString": "type(library RONTransferHelper)" - } - }, - "id": 63807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13522:12:86", - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 67419, - "src": "13504:30:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$", - "typeString": "function (address payable,uint256)" - } - }, - "id": 63814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13504:67:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63815, - "nodeType": "ExpressionStatement", - "src": "13504:67:86" - } - } - ] - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63818, - "name": "_transferRONToTreasury", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63766, - "src": "13584:22:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 63819, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13584:24:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63820, - "nodeType": "ExpressionStatement", - "src": "13584:24:86" - } - ] - }, - "documentation": { - "id": 63767, - "nodeType": "StructuredDocumentation", - "src": "13113:64:86", - "text": " @dev Helper method to take renewal fee of a name." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_handlePrice", - "nameLocation": "13189:12:86", - "parameters": { - "id": 63772, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63769, - "mutability": "mutable", - "name": "name", - "nameLocation": "13216:4:86", - "nodeType": "VariableDeclaration", - "scope": 63822, - "src": "13202:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63768, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "13202:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63771, - "mutability": "mutable", - "name": "duration", - "nameLocation": "13229:8:86", - "nodeType": "VariableDeclaration", - "scope": 63822, - "src": "13222:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63770, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "13222:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - } - ], - "src": "13201:37:86" - }, - "returnParameters": { - "id": 63777, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63774, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "13265:8:86", - "nodeType": "VariableDeclaration", - "scope": 63822, - "src": "13257:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63773, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13257:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63776, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "13283:8:86", - "nodeType": "VariableDeclaration", - "scope": 63822, - "src": "13275:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63775, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13275:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "13256:36:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63885, - "nodeType": "FunctionDefinition", - "src": "13726:516:86", - "nodes": [], - "body": { - "id": 63884, - "nodeType": "Block", - "src": "13939:303:86", - "nodes": [], - "statements": [ - { - "assignments": [ - 63844, - 63846 - ], - "declarations": [ - { - "constant": false, - "id": 63844, - "mutability": "mutable", - "name": "expiryTime", - "nameLocation": "13953:10:86", - "nodeType": "VariableDeclaration", - "scope": 63884, - "src": "13946:17:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63843, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "13946:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63846, - "mutability": "mutable", - "name": "id", - "nameLocation": "13973:2:86", - "nodeType": "VariableDeclaration", - "scope": 63884, - "src": "13965:10:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63845, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13965:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 63856, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 63849, - "name": "LibRNSDomain", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 66042, - "src": "13996:12:86", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibRNSDomain_$66042_$", - "typeString": "type(library LibRNSDomain)" - } - }, - "id": 63850, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "14009:6:86", - "memberName": "RON_ID", - "nodeType": "MemberAccess", - "referencedDeclaration": 66005, - "src": "13996:19:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63851, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63825, - "src": "14017:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63852, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63831, - "src": "14023:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63853, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63827, - "src": "14033:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63854, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63829, - "src": "14040:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 63847, - "name": "_rnsUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62832, - "src": "13979:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$64975", - "typeString": "contract INSUnified" - } - }, - "id": 63848, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "13991:4:86", - "memberName": "mint", - "nodeType": "MemberAccess", - "referencedDeclaration": 64895, - "src": "13979:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_address_$_t_address_$_t_uint64_$returns$_t_uint64_$_t_uint256_$", - "typeString": "function (uint256,string memory,address,address,uint64) external returns (uint64,uint256)" - } - }, - "id": 63855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "13979:70:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint64_$_t_uint256_$", - "typeString": "tuple(uint64,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13945:104:86" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 63860, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 63857, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63834, - "src": "14059:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - "id": 63858, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "14064:6:86", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "14059:11:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 63859, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14074:1:86", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14059:16:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63867, - "nodeType": "IfStatement", - "src": "14055:53:86", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 63862, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63831, - "src": "14089:8:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63863, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63846, - "src": "14099:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63864, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63834, - "src": "14103:4:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - ], - "id": 63861, - "name": "_setRecords", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63729, - "src": "14077:11:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$", - "typeString": "function (address,uint256,bytes calldata[] calldata)" - } - }, - "id": 63865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14077:31:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63866, - "nodeType": "ExpressionStatement", - "src": "14077:31:86" - } - }, - { - "condition": { - "id": 63868, - "name": "reverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63836, - "src": "14118:13:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63874, - "nodeType": "IfStatement", - "src": "14114:49:86", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 63870, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63825, - "src": "14151:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63871, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63827, - "src": "14157:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 63869, - "name": "_setReverseRecord", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63750, - "src": "14133:17:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$", - "typeString": "function (string memory,address)" - } - }, - "id": 63872, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14133:30:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63873, - "nodeType": "ExpressionStatement", - "src": "14133:30:86" - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 63876, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63825, - "src": "14189:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 63877, - "name": "id", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63846, - "src": "14195:2:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63878, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63827, - "src": "14199:5:86", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63879, - "name": "ronPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63840, - "src": "14206:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63880, - "name": "usdPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63838, - "src": "14216:8:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 63881, - "name": "expiryTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63844, - "src": "14226:10:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "id": 63875, - "name": "NameRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65205, - "src": "14174:14:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint64_$returns$__$", - "typeString": "function (string memory,uint256,address,uint256,uint256,uint64)" - } - }, - "id": 63882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14174:63:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63883, - "nodeType": "EmitStatement", - "src": "14169:68:86" - } - ] - }, - "documentation": { - "id": 63823, - "nodeType": "StructuredDocumentation", - "src": "13617:106:86", - "text": " @dev Helper method to register a name for owner.\n Emits an event {NameRegistered}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_register", - "nameLocation": "13735:9:86", - "parameters": { - "id": 63841, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63825, - "mutability": "mutable", - "name": "name", - "nameLocation": "13764:4:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13750:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63824, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "13750:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63827, - "mutability": "mutable", - "name": "owner", - "nameLocation": "13782:5:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13774:13:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63826, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13774:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63829, - "mutability": "mutable", - "name": "duration", - "nameLocation": "13800:8:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13793:15:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 63828, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "13793:6:86", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63831, - "mutability": "mutable", - "name": "resolver", - "nameLocation": "13822:8:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13814:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63830, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13814:7:86", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63834, - "mutability": "mutable", - "name": "data", - "nameLocation": "13853:4:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13836:21:86", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 63832, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13836:5:86", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 63833, - "nodeType": "ArrayTypeName", - "src": "13836:7:86", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63836, - "mutability": "mutable", - "name": "reverseRecord", - "nameLocation": "13868:13:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13863:18:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 63835, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13863:4:86", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63838, - "mutability": "mutable", - "name": "usdPrice", - "nameLocation": "13895:8:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13887:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63837, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13887:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 63840, - "mutability": "mutable", - "name": "ronPrice", - "nameLocation": "13917:8:86", - "nodeType": "VariableDeclaration", - "scope": 63885, - "src": "13909:16:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 63839, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13909:7:86", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "13744:185:86" - }, - "returnParameters": { - "id": 63842, - "nodeType": "ParameterList", - "parameters": [], - "src": "13939:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63903, - "nodeType": "FunctionDefinition", - "src": "14364:155:86", - "nodes": [], - "body": { - "id": 63902, - "nodeType": "Block", - "src": "14426:93:86", - "nodes": [], - "statements": [ - { - "expression": { - "id": 63894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 63892, - "name": "_priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 62840, - "src": "14432:12:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 63893, - "name": "priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63889, - "src": "14447:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "src": "14432:26:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "id": 63895, - "nodeType": "ExpressionStatement", - "src": "14432:26:86" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 63897, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51922, - "src": "14488:10:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 63898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14488:12:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 63899, - "name": "priceOracle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63889, - "src": "14502:11:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - ], - "id": 63896, - "name": "DomainPriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65181, - "src": "14469:18:86", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_INSDomainPrice_$64599_$returns$__$", - "typeString": "function (address,contract INSDomainPrice)" - } - }, - "id": 63900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14469:45:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63901, - "nodeType": "EmitStatement", - "src": "14464:50:86" - } - ] - }, - "documentation": { - "id": 63886, - "nodeType": "StructuredDocumentation", - "src": "14246:115:86", - "text": " @dev Helper method to update RNSDomainPrice contract.\n Emits an event {DomainPriceUpdated}." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setPriceOracle", - "nameLocation": "14373:15:86", - "parameters": { - "id": 63890, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63889, - "mutability": "mutable", - "name": "priceOracle", - "nameLocation": "14404:11:86", - "nodeType": "VariableDeclaration", - "scope": 63903, - "src": "14389:26:86", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - }, - "typeName": { - "id": 63888, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 63887, - "name": "INSDomainPrice", - "nameLocations": [ - "14389:14:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 64599, - "src": "14389:14:86" - }, - "referencedDeclaration": 64599, - "src": "14389:14:86", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSDomainPrice_$64599", - "typeString": "contract INSDomainPrice" - } - }, - "visibility": "internal" - } - ], - "src": "14388:28:86" - }, - "returnParameters": { - "id": 63891, - "nodeType": "ParameterList", - "parameters": [], - "src": "14426:0:86" - }, - "scope": 63920, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 63919, - "nodeType": "FunctionDefinition", - "src": "14612:123:86", - "nodes": [], - "body": { - "id": 63918, - "nodeType": "Block", - "src": "14673:62:86", - "nodes": [], - "statements": [ - { - "condition": { - "id": 63912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "14683:16:86", - "subExpression": { - "arguments": [ - { - "id": 63910, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63906, - "src": "14694:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63909, - "name": "available", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63057, - "src": "14684:9:86", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bool_$", - "typeString": "function (string memory) view returns (bool)" - } - }, - "id": 63911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14684:15:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 63917, - "nodeType": "IfStatement", - "src": "14679:51:86", - "trueBody": { - "errorCall": { - "arguments": [ - { - "id": 63914, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 63906, - "src": "14725:4:86", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 63913, - "name": "NameNotAvailable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 65120, - "src": "14708:16:86", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 63915, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "14708:22:86", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 63916, - "nodeType": "RevertStatement", - "src": "14701:29:86" - } - } - ] - }, - "documentation": { - "id": 63904, - "nodeType": "StructuredDocumentation", - "src": "14523:86:86", - "text": " @dev Helper method to check if a domain name is available for register." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_requireAvailable", - "nameLocation": "14621:17:86", - "parameters": { - "id": 63907, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 63906, - "mutability": "mutable", - "name": "name", - "nameLocation": "14653:4:86", - "nodeType": "VariableDeclaration", - "scope": 63919, - "src": "14639:18:86", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 63905, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "14639:6:86", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "14638:20:86" - }, - "returnParameters": { - "id": 63908, - "nodeType": "ParameterList", - "parameters": [], - "src": "14673:0:86" - }, - "scope": 63920, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 62780, - "name": "Pausable", - "nameLocations": [ - "1198:8:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49972, - "src": "1198:8:86" - }, - "id": 62781, - "nodeType": "InheritanceSpecifier", - "src": "1198:8:86" - }, - { - "baseName": { - "id": 62782, - "name": "Initializable", - "nameLocations": [ - "1210:13:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 49864, - "src": "1210:13:86" - }, - "id": 62783, - "nodeType": "InheritanceSpecifier", - "src": "1210:13:86" - }, - { - "baseName": { - "id": 62784, - "name": "ReentrancyGuard", - "nameLocations": [ - "1227:15:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50037, - "src": "1227:15:86" - }, - "id": 62785, - "nodeType": "InheritanceSpecifier", - "src": "1227:15:86" - }, - { - "baseName": { - "id": 62786, - "name": "AccessControlEnumerable", - "nameLocations": [ - "1246:23:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48591, - "src": "1246:23:86" - }, - "id": 62787, - "nodeType": "InheritanceSpecifier", - "src": "1246:23:86" - }, - { - "baseName": { - "id": 62788, - "name": "IRONRegistrarController", - "nameLocations": [ - "1273:23:86" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 65460, - "src": "1273:23:86" - }, - "id": 62789, - "nodeType": "InheritanceSpecifier", - "src": "1273:23:86" - } - ], - "canonicalName": "RONRegistrarController", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 62779, - "nodeType": "StructuredDocumentation", - "src": "842:318:86", - "text": " @title RONRegistrarController\n @notice Customized version of ETHRegistrarController: https://github.com/ensdomains/ens-contracts/blob/45455f1229556ed4f416ef7225d4caea2c1bc0b5/contracts/ethregistrar/ETHRegistrarController.sol\n @dev A registrar controller for registering and renewing names at fixed cost." - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 63920, - 65460, - 48591, - 48466, - 52295, - 52307, - 48689, - 48664, - 50037, - 49864, - 49972, - 51932 - ], - "name": "RONRegistrarController", - "nameLocation": "1170:22:86", - "scope": 63921, - "usedErrors": [ - 65110, - 65115, - 65120, - 65125, - 65128, - 65133, - 65136, - 65141, - 65144, - 65147, - 65152, - 65163, - 65166 - ], - "usedEvents": [ - 48603, - 48612, - 48621, - 49710, - 49875, - 49880, - 65173, - 65181, - 65190, - 65205, - 65216, - 65229 - ] - } - ], - "license": "MIT" - }, - "blockNumber": 21481353, - "bytecode": "0x60806040526000805460ff19169055600180556200001c62000022565b620000e9565b60005462010000900460ff1615620000905760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600054610100900460ff90811614620000e7576000805461ff00191661ff0017905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612f6980620000f96000396000f3fe6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a61024536600461207d565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120a7565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d6103583660046120d5565b610745565b005b34801561036b57600080fd5b5061035d61037a3660046120d5565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b83660046120d5565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612105565b610815565b61035d61043b366004612137565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d6104733660046121b9565b6109d8565b34801561048457600080fd5b5061035d6104933660046122c0565b610b84565b3480156104a457600080fd5b5061035d610cbd565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d9366004612450565b610cdd565b3480156104ea57600080fd5b506102a26104f936600461250b565b610e3e565b34801561050a57600080fd5b5061024a6105193660046120d5565b610e5d565b34801561052a57600080fd5b5061024a61053936600461252d565b610e88565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e36600461252d565b610f16565b34801561057f57600080fd5b5061027361058e366004612569565b610fa1565b34801561059f57600080fd5b5061035d6105ae3660046120a7565b611051565b3480156105bf57600080fd5b506103086105ce3660046120a7565b611065565b61035d6105e13660046125af565b61107c565b3480156105f257600080fd5b5061035d6106013660046120d5565b611188565b34801561061257600080fd5b506103086106213660046125af565b6111ad565b34801561063257600080fd5b5061035d61064136600461250b565b611239565b34801561065257600080fd5b50610308600080516020612f1483398151915281565b34801561067457600080fd5b5061035d610683366004612105565b61124e565b34801561069457600080fd5b5061035d6106a33660046120a7565b61127c565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f736600461252d565b6112d5565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f82611312565b92915050565b60008281526002602052604090206001015461076081611347565b61076a8383611351565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611373565b5050565b600080516020612f1483398151915261080a81611347565b610812611395565b50565b600061082081611347565b6107ee826113e7565b61083161143e565b610839611486565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610fa1915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac8234612689565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112d592505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610973919061269c565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab94939291906126e2565b60405180910390a282156109c3576109c333846114df565b6109cb611544565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f148339815191528b61155a565b610aca60008c61155a565b610ad3836113e7565b610adc86611564565b610ae6878961159b565b603980546001600160a01b03808c166001600160a01b031992831617909255603a8054888416908316179055603b8054878416908316179055603d8054928516929091169190911790558015610b77576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610bae81611347565b84801580610bbc5750808414155b15610bda57604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c6a5783603f60008a8a85818110610bfc57610bfc612716565b9050602002013581526020019081526020016000206000888885818110610c2557610c25612716565b9050602002016020810190610c3a9190612105565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bdd565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610cac95949392919061272c565b60405180910390a250505050505050565b600080516020612f14833981519152610cd581611347565b610812611625565b610ce561143e565b610ced611486565b86610cf781611662565b610d0088610f16565b610d1f57876040516308eee0fd60e31b81526004016107db9190612816565b6000610d2a896112d5565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610da191908101906128e3565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dde575080155b15610e04578a8a8383604051631fc5717160e01b81526004016107db94939291906129c5565b600080610e118d8c61168a565b91509150610e268d8d8d8d8d8d8d89896116e2565b505050505050610e3560018055565b50505050505050565b6000828152600360205260408120610e56908361180c565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e9583611818565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610ece908590600401612816565b602060405180830381865afa158015610eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0f91906129ff565b1592915050565b6000610f2182610e88565b801561073f5750603a546001600160a01b03166396e494e8610f42846112d5565b6040518263ffffffff1660e01b8152600401610f6091815260200190565b602060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906129ff565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fdc9089908990600401612a1c565b608060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190612a77565b8051825192945090925061103091612aac565b9350806020015182602001516110469190612aac565b925050509250929050565b600061105c81611347565b6107ee82611564565b600081815260036020526040812061073f90611906565b61108461143e565b61108c611486565b6000611097896112d5565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110991908101906128e3565b60200151606001511561113157886040516331597a5760e21b81526004016107db9190612816565b60006111438a8a8a8a8a8a8a8a6111ad565b905061114f8882611910565b60008061115c8c8b61168a565b915091506111718c8c8c8b8b8b8b89896116e2565b5050505061117e60018055565b5050505050505050565b6000828152600260205260409020600101546111a381611347565b61076a8383611373565b6000886111b981611662565b83158015906111cf57506001600160a01b038616155b156111ed576040516334fd817160e21b815260040160405180910390fd5b6111f68a6112d5565b89898989898989604051602001611214989796959493929190612b50565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124481611347565b61076a838361159b565b600061125981611347565b50603980546001600160a01b0319166001600160a01b0392909216919091179055565b61128461143e565b6037546000828152603e602052604090205442916112a191612aac565b106112c257604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b61081281336119c1565b61135b82826119f4565b600082815260036020526040902061076a9082611a7a565b61137d8282611a8f565b600082815260036020526040902061076a9082611af6565b61139d611b0b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114845760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114d85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114eb8383611b54565b90508061076a57611504836001600160a01b0316611bca565b61150d83611be0565b60405160200161151e929190612bb0565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612816565b603954611484906001600160a01b0316476114df565b6107ee8282611351565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611433565b428111156115bc57604051630b4319e560e21b815260040160405180910390fd5b8181116115dc576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b61162d61143e565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ca3390565b61166b81610f16565b61081257806040516308eee0fd60e31b81526004016107db9190612816565b6000806116978484610fa1565b9092509050348111156116bd5760405163044044a560e21b815260040160405180910390fd5b348181039082146116d2576116d233826114df565b506116db611544565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b815260040161174e959493929190612c2e565b60408051808303816000875af115801561176c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117909190612c79565b909250905085156117a7576117a788828989611bf7565b84156117b7576117b78b8b611c75565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d8688876040516117f79493929190612ca7565b60405180910390a35050505050505050505050565b6000610e568383611d0c565b600080600080845190505b808310156118fe57600085848151811061183f5761183f612716565b01602001516001600160f81b0319169050600160ff1b811015611867576001840193506118f2565b600760fd1b6001600160f81b031982161015611888576002840193506118f2565b600f60fc1b6001600160f81b0319821610156118a9576003840193506118f2565b601f60fb1b6001600160f81b0319821610156118ca576004840193506118f2565b603f60fa1b6001600160f81b0319821610156118eb576005840193506118f2565b6006840193505b50600190910190611823565b509392505050565b600061073f825490565b603854826001600160401b03161015611947576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119609042612689565b905060365481101561198857604051635320bcf960e01b8152600481018390526024016107db565b8060375410156119ae5760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b6119cb8282610e5d565b6107ee576119d881611bca565b6119e3836020611d36565b60405160200161151e929190612cdf565b6119fe8282610e5d565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a363390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e56836001600160a01b038416611ed1565b611a998282610e5d565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e56836001600160a01b038416611f20565b60005460ff166114845760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611b7e9190612d54565b60006040518083038185875af1925050503d8060008114611bbb576040519150601f19603f3d011682016040523d82523d6000602084013e611bc0565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d36565b606061073f82611bef84612013565b600101611d36565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c2790869086908690600401612d70565b6000604051808303816000875af1158015611c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c6e9190810190612d93565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611c9d908690602001612e6a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611cc9929190612e92565b6020604051808303816000875af1158015611ce8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612eb6565b6000826000018281548110611d2357611d23612716565b9060005260206000200154905092915050565b60606000611d45836002612ecf565b611d50906002612aac565b6001600160401b03811115611d6757611d67612343565b6040519080825280601f01601f191660200182016040528015611d91576020820181803683370190505b509050600360fc1b81600081518110611dac57611dac612716565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ddb57611ddb612716565b60200101906001600160f81b031916908160001a9053506000611dff846002612ecf565b611e0a906001612aac565b90505b6001811115611e82576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e3e57611e3e612716565b1a60f81b828281518110611e5457611e54612716565b60200101906001600160f81b031916908160001a90535060049490941c93611e7b81612ee6565b9050611e0d565b508315610e565760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f185750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b60008181526001830160205260408120548015612009576000611f44600183612689565b8554909150600090611f5890600190612689565b9050818114611fbd576000866000018281548110611f7857611f78612716565b9060005260206000200154905080876000018481548110611f9b57611f9b612716565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fce57611fce612efd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561202b5760809290921c916010015b604083901c156120405760409290921c916008015b602083901c156120555760209290921c916004015b601083901c1561206a5760109290921c916002015b600883901c1561073f5760010192915050565b60006020828403121561208f57600080fd5b81356001600160e01b031981168114610e5657600080fd5b6000602082840312156120b957600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b600080604083850312156120e857600080fd5b8235915060208301356120fa816120c0565b809150509250929050565b60006020828403121561211757600080fd5b8135610e56816120c0565b6001600160401b038116811461081257600080fd5b60008060006040848603121561214c57600080fd5b83356001600160401b038082111561216357600080fd5b818601915086601f83011261217757600080fd5b81358181111561218657600080fd5b87602082850101111561219857600080fd5b602092830195509350508401356121ae81612122565b809150509250925092565b6000806000806000806000806000806101408b8d0312156121d957600080fd5b8a356121e4816120c0565b995060208b01356121f4816120c0565b985060408b0135612204816120c0565b975060608b0135965060808b0135955060a08b0135945060c08b0135612229816120c0565b935060e08b0135612239816120c0565b92506101008b013561224a816120c0565b91506101208b013561225b816120c0565b809150509295989b9194979a5092959850565b60008083601f84011261228057600080fd5b5081356001600160401b0381111561229757600080fd5b6020830191508360208260051b85010111156116db57600080fd5b801515811461081257600080fd5b6000806000806000606086880312156122d857600080fd5b85356001600160401b03808211156122ef57600080fd5b6122fb89838a0161226e565b9097509550602088013591508082111561231457600080fd5b506123218882890161226e565b9094509250506040860135612335816122b2565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561237b5761237b612343565b60405290565b604051606081016001600160401b038111828210171561237b5761237b612343565b604051601f8201601f191681016001600160401b03811182821017156123cb576123cb612343565b604052919050565b60006001600160401b038211156123ec576123ec612343565b50601f01601f191660200190565b600082601f83011261240b57600080fd5b813561241e612419826123d3565b6123a3565b81815284602083860101111561243357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561246b57600080fd5b87356001600160401b038082111561248257600080fd5b61248e8b838c016123fa565b985060208a013591506124a0826120c0565b9096506040890135906124b282612122565b9095506060890135906124c4826120c0565b909450608089013590808211156124da57600080fd5b506124e78a828b0161226e565b90945092505060a08801356124fb816122b2565b8091505092959891949750929550565b6000806040838503121561251e57600080fd5b50508035926020909101359150565b60006020828403121561253f57600080fd5b81356001600160401b0381111561255557600080fd5b612561848285016123fa565b949350505050565b6000806040838503121561257c57600080fd5b82356001600160401b0381111561259257600080fd5b61259e858286016123fa565b92505060208301356120fa81612122565b60008060008060008060008060e0898b0312156125cb57600080fd5b88356001600160401b03808211156125e257600080fd5b6125ee8c838d016123fa565b995060208b01359150612600826120c0565b90975060408a01359061261282612122565b90965060608a0135955060808a01359061262b826120c0565b90945060a08a0135908082111561264157600080fd5b5061264e8b828c0161226e565b90945092505060c0890135612662816122b2565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f612673565b6000602082840312156126ae57600080fd5b8151610e5681612122565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006126f66060830186886126b9565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561274c57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127a957833561278c816120c0565b6001600160a01b0316815292810192600192909201918101612779565b861515604087015293506127bc92505050565b9695505050505050565b60005b838110156127e15781810151838201526020016127c9565b50506000910152565b600081518084526128028160208601602086016127c6565b601f01601f19169290920160200192915050565b602081526000610e5660208301846127ea565b6000612837612419846123d3565b905082815283838301111561284b57600080fd5b610e568360208301846127c6565b60006080828403121561286b57600080fd5b604051608081018181106001600160401b038211171561288d5761288d612343565b806040525080915082516128a0816120c0565b815260208301516128b0816120c0565b602082015260408301516128c381612122565b604082015260608301516128d6816122b2565b6060919091015292915050565b600060208083850312156128f657600080fd5b82516001600160401b038082111561290d57600080fd5b9084019060a0828703121561292157600080fd5b612929612359565b82518281111561293857600080fd5b83016060818903121561294a57600080fd5b612952612381565b815160ff8116811461296357600080fd5b8152818601518682015260408201518481111561297f57600080fd5b82019350601f8401891361299257600080fd5b6129a0898551888701612829565b60408201528252506129b487848601612859565b848201528094505050505092915050565b6080815260006129d860808301876127ea565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a1157600080fd5b8151610e56816122b2565b604081526000612a2f60408301856127ea565b90506001600160401b03831660208301529392505050565b600060408284031215612a5957600080fd5b612a61612359565b9050815181526020820151602082015292915050565b60008060808385031215612a8a57600080fd5b612a948484612a47565b9150612aa38460408501612a47565b90509250929050565b8082018082111561073f5761073f612673565b81835260006020808501808196508560051b810191508460005b87811015612b435782840389528135601e19883603018112612afa57600080fd5b870185810190356001600160401b03811115612b1557600080fd5b803603821315612b2457600080fd5b612b2f8682846126b9565b9a87019a9550505090840190600101612ad9565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612b999083018587612abf565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612bfb81602a8501602088016127c6565b660103b30b63ab2960cd1b602a918401918201528351612c228160318401602088016127c6565b01603101949350505050565b85815260a060208201526000612c4760a08301876127ea565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612c8c57600080fd5b8251612c9781612122565b6020939093015192949293505050565b608081526000612cba60808301876127ea565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d178160178501602088016127c6565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d488160288401602088016127c6565b01602801949350505050565b60008251612d668184602087016127c6565b9190910192915050565b838152604060208201526000612d8a604083018486612abf565b95945050505050565b60006020808385031215612da657600080fd5b82516001600160401b0380821115612dbd57600080fd5b818501915085601f830112612dd157600080fd5b815181811115612de357612de3612343565b8060051b612df28582016123a3565b9182528381018501918581019089841115612e0c57600080fd5b86860192505b83831015612e5d57825185811115612e2a5760008081fd5b8601603f81018b13612e3c5760008081fd5b612e4d8b8983015160408401612829565b8352509186019190860190612e12565b9998505050505050505050565b60008251612e7c8184602087016127c6565b63173937b760e11b920191825250600401919050565b6001600160a01b0383168152604060208201819052600090612561908301846127ea565b600060208284031215612ec857600080fd5b5051919050565b808202811582820484141761073f5761073f612673565b600081612ef557612ef5612673565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa264697066735822122006f996c081232038f43c5a1b7c3f11015820d9739a2a8d4b25e938ce2da8ea5764736f6c63430008150033", + "absolutePath": "RONRegistrarController.sol", + "address": "0xcE19C5041734c825EE8A4476dC070c4f72BbbbfA", + "ast": "", + "blockNumber": 28522728, + "bytecode": "0x60806040526000805460ff19169055600180556200001c62000022565b620000e9565b60005462010000900460ff1615620000905760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600054610100900460ff90811614620000e7576000805461ff00191661ff0017905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612fbc80620000f96000396000f3fe6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a6102453660046120d0565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120fa565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d610358366004612128565b610745565b005b34801561036b57600080fd5b5061035d61037a366004612128565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b8366004612128565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612158565b610815565b61035d61043b36600461218a565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d61047336600461220c565b6109d8565b34801561048457600080fd5b5061035d610493366004612313565b610b80565b3480156104a457600080fd5b5061035d610cb9565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d93660046124a3565b610cd9565b3480156104ea57600080fd5b506102a26104f936600461255e565b610e3a565b34801561050a57600080fd5b5061024a610519366004612128565b610e59565b34801561052a57600080fd5b5061024a610539366004612580565b610e84565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e366004612580565b610f12565b34801561057f57600080fd5b5061027361058e3660046125bc565b610f9d565b34801561059f57600080fd5b5061035d6105ae3660046120fa565b61104d565b3480156105bf57600080fd5b506103086105ce3660046120fa565b611061565b61035d6105e1366004612602565b611078565b3480156105f257600080fd5b5061035d610601366004612128565b611184565b34801561061257600080fd5b50610308610621366004612602565b6111a9565b34801561063257600080fd5b5061035d61064136600461255e565b611235565b34801561065257600080fd5b50610308600080516020612f6783398151915281565b34801561067457600080fd5b5061035d610683366004612158565b61124a565b34801561069457600080fd5b5061035d6106a33660046120fa565b61125e565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f7366004612580565b6112b7565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f826112f4565b92915050565b60008281526002602052604090206001015461076081611329565b61076a8383611333565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611355565b5050565b600080516020612f6783398151915261080a81611329565b610812611377565b50565b600061082081611329565b6107ee826113c9565b610831611420565b610839611468565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610f9d915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac82346126dc565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112b792505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906126ef565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab9493929190612735565b60405180910390a282156109c3576109c333846114c1565b6109cb611526565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f678339815191528b61153c565b610aca60008c61153c565b610ad3836113c9565b610adc86611546565b610ae6878961157d565b610aef89611607565b603a80546001600160a01b038088166001600160a01b031992831617909255603b8054878416908316179055603d8054928516929091169190911790558015610b73576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610baa81611329565b84801580610bb85750808414155b15610bd657604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c665783603f60008a8a85818110610bf857610bf8612769565b9050602002013581526020019081526020016000206000888885818110610c2157610c21612769565b9050602002016020810190610c369190612158565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bd9565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610ca895949392919061277f565b60405180910390a250505050505050565b600080516020612f67833981519152610cd181611329565b610812611678565b610ce1611420565b610ce9611468565b86610cf3816116b5565b610cfc88610f12565b610d1b57876040516308eee0fd60e31b81526004016107db9190612869565b6000610d26896112b7565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9d9190810190612936565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dda575080155b15610e00578a8a8383604051631fc5717160e01b81526004016107db9493929190612a18565b600080610e0d8d8c6116dd565b91509150610e228d8d8d8d8d8d8d8989611735565b505050505050610e3160018055565b50505050505050565b6000828152600360205260408120610e52908361185f565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e918361186b565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610eca908590600401612869565b602060405180830381865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612a52565b1592915050565b6000610f1d82610e84565b801561073f5750603a546001600160a01b03166396e494e8610f3e846112b7565b6040518263ffffffff1660e01b8152600401610f5c91815260200190565b602060405180830381865afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f9190612a52565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fd89089908990600401612a6f565b608060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190612aca565b8051825192945090925061102c91612aff565b9350806020015182602001516110429190612aff565b925050509250929050565b600061105881611329565b6107ee82611546565b600081815260036020526040812061073f90611959565b611080611420565b611088611468565b6000611093896112b7565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111059190810190612936565b60200151606001511561112d57886040516331597a5760e21b81526004016107db9190612869565b600061113f8a8a8a8a8a8a8a8a6111a9565b905061114b8882611963565b6000806111588c8b6116dd565b9150915061116d8c8c8c8b8b8b8b8989611735565b5050505061117a60018055565b5050505050505050565b60008281526002602052604090206001015461119f81611329565b61076a8383611355565b6000886111b5816116b5565b83158015906111cb57506001600160a01b038616155b156111e9576040516334fd817160e21b815260040160405180910390fd5b6111f28a6112b7565b89898989898989604051602001611210989796959493929190612ba3565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124081611329565b61076a838361157d565b600061125581611329565b6107ee82611607565b611266611420565b6037546000828152603e6020526040902054429161128391612aff565b106112a457604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b6108128133611a14565b61133d8282611a47565b600082815260036020526040902061076a9082611acd565b61135f8282611ae2565b600082815260036020526040902061076a9082611b49565b61137f611b5e565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114665760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114cd8383611ba7565b90508061076a576114e6836001600160a01b0316611c1d565b6114ef83611c33565b604051602001611500929190612c03565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612869565b603954611466906001600160a01b0316476114c1565b6107ee8282611333565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611415565b4281111561159e57604051630b4319e560e21b815260040160405180910390fd5b8181116115be576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b6001600160a01b03811661162e5760405163e99d5ac560e01b815260040160405180910390fd5b603980546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b611680611420565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ac3390565b6116be81610f12565b61081257806040516308eee0fd60e31b81526004016107db9190612869565b6000806116ea8484610f9d565b9092509050348111156117105760405163044044a560e21b815260040160405180910390fd5b348181039082146117255761172533826114c1565b5061172e611526565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b81526004016117a1959493929190612c81565b60408051808303816000875af11580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190612ccc565b909250905085156117fa576117fa88828989611c4a565b841561180a5761180a8b8b611cc8565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d86888760405161184a9493929190612cfa565b60405180910390a35050505050505050505050565b6000610e528383611d5f565b600080600080845190505b8083101561195157600085848151811061189257611892612769565b01602001516001600160f81b0319169050600160ff1b8110156118ba57600184019350611945565b600760fd1b6001600160f81b0319821610156118db57600284019350611945565b600f60fc1b6001600160f81b0319821610156118fc57600384019350611945565b601f60fb1b6001600160f81b03198216101561191d57600484019350611945565b603f60fa1b6001600160f81b03198216101561193e57600584019350611945565b6006840193505b50600190910190611876565b509392505050565b600061073f825490565b603854826001600160401b0316101561199a576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119b390426126dc565b90506036548110156119db57604051635320bcf960e01b8152600481018390526024016107db565b806037541015611a015760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b611a1e8282610e59565b6107ee57611a2b81611c1d565b611a36836020611d89565b604051602001611500929190612d32565b611a518282610e59565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a893390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e52836001600160a01b038416611f24565b611aec8282610e59565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e52836001600160a01b038416611f73565b60005460ff166114665760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611bd19190612da7565b60006040518083038185875af1925050503d8060008114611c0e576040519150601f19603f3d011682016040523d82523d6000602084013e611c13565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d89565b606061073f82611c4284612066565b600101611d89565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c7a90869086908690600401612dc3565b6000604051808303816000875af1158015611c99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc19190810190612de6565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611cf0908690602001612ebd565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611d1c929190612ee5565b6020604051808303816000875af1158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612f09565b6000826000018281548110611d7657611d76612769565b9060005260206000200154905092915050565b60606000611d98836002612f22565b611da3906002612aff565b6001600160401b03811115611dba57611dba612396565b6040519080825280601f01601f191660200182016040528015611de4576020820181803683370190505b509050600360fc1b81600081518110611dff57611dff612769565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e2e57611e2e612769565b60200101906001600160f81b031916908160001a9053506000611e52846002612f22565b611e5d906001612aff565b90505b6001811115611ed5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e9157611e91612769565b1a60f81b828281518110611ea757611ea7612769565b60200101906001600160f81b031916908160001a90535060049490941c93611ece81612f39565b9050611e60565b508315610e525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b6000818152600183016020526040812054801561205c576000611f976001836126dc565b8554909150600090611fab906001906126dc565b9050818114612010576000866000018281548110611fcb57611fcb612769565b9060005260206000200154905080876000018481548110611fee57611fee612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202157612021612f50565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561207e5760809290921c916010015b604083901c156120935760409290921c916008015b602083901c156120a85760209290921c916004015b601083901c156120bd5760109290921c916002015b600883901c1561073f5760010192915050565b6000602082840312156120e257600080fd5b81356001600160e01b031981168114610e5257600080fd5b60006020828403121561210c57600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b6000806040838503121561213b57600080fd5b82359150602083013561214d81612113565b809150509250929050565b60006020828403121561216a57600080fd5b8135610e5281612113565b6001600160401b038116811461081257600080fd5b60008060006040848603121561219f57600080fd5b83356001600160401b03808211156121b657600080fd5b818601915086601f8301126121ca57600080fd5b8135818111156121d957600080fd5b8760208285010111156121eb57600080fd5b6020928301955093505084013561220181612175565b809150509250925092565b6000806000806000806000806000806101408b8d03121561222c57600080fd5b8a3561223781612113565b995060208b013561224781612113565b985060408b013561225781612113565b975060608b0135965060808b0135955060a08b0135945060c08b013561227c81612113565b935060e08b013561228c81612113565b92506101008b013561229d81612113565b91506101208b01356122ae81612113565b809150509295989b9194979a5092959850565b60008083601f8401126122d357600080fd5b5081356001600160401b038111156122ea57600080fd5b6020830191508360208260051b850101111561172e57600080fd5b801515811461081257600080fd5b60008060008060006060868803121561232b57600080fd5b85356001600160401b038082111561234257600080fd5b61234e89838a016122c1565b9097509550602088013591508082111561236757600080fd5b50612374888289016122c1565b909450925050604086013561238881612305565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123ce576123ce612396565b60405290565b604051606081016001600160401b03811182821017156123ce576123ce612396565b604051601f8201601f191681016001600160401b038111828210171561241e5761241e612396565b604052919050565b60006001600160401b0382111561243f5761243f612396565b50601f01601f191660200190565b600082601f83011261245e57600080fd5b813561247161246c82612426565b6123f6565b81815284602083860101111561248657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156124be57600080fd5b87356001600160401b03808211156124d557600080fd5b6124e18b838c0161244d565b985060208a013591506124f382612113565b90965060408901359061250582612175565b90955060608901359061251782612113565b9094506080890135908082111561252d57600080fd5b5061253a8a828b016122c1565b90945092505060a088013561254e81612305565b8091505092959891949750929550565b6000806040838503121561257157600080fd5b50508035926020909101359150565b60006020828403121561259257600080fd5b81356001600160401b038111156125a857600080fd5b6125b48482850161244d565b949350505050565b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f18582860161244d565b925050602083013561214d81612175565b60008060008060008060008060e0898b03121561261e57600080fd5b88356001600160401b038082111561263557600080fd5b6126418c838d0161244d565b995060208b0135915061265382612113565b90975060408a01359061266582612175565b90965060608a0135955060808a01359061267e82612113565b90945060a08a0135908082111561269457600080fd5b506126a18b828c016122c1565b90945092505060c08901356126b581612305565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f6126c6565b60006020828403121561270157600080fd5b8151610e5281612175565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061274960608301868861270c565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561279f57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127fc5783356127df81612113565b6001600160a01b03168152928101926001929092019181016127cc565b8615156040870152935061280f92505050565b9695505050505050565b60005b8381101561283457818101518382015260200161281c565b50506000910152565b60008151808452612855816020860160208601612819565b601f01601f19169290920160200192915050565b602081526000610e52602083018461283d565b600061288a61246c84612426565b905082815283838301111561289e57600080fd5b610e52836020830184612819565b6000608082840312156128be57600080fd5b604051608081018181106001600160401b03821117156128e0576128e0612396565b806040525080915082516128f381612113565b8152602083015161290381612113565b6020820152604083015161291681612175565b6040820152606083015161292981612305565b6060919091015292915050565b6000602080838503121561294957600080fd5b82516001600160401b038082111561296057600080fd5b9084019060a0828703121561297457600080fd5b61297c6123ac565b82518281111561298b57600080fd5b83016060818903121561299d57600080fd5b6129a56123d4565b815160ff811681146129b657600080fd5b815281860151868201526040820151848111156129d257600080fd5b82019350601f840189136129e557600080fd5b6129f389855188870161287c565b6040820152825250612a07878486016128ac565b848201528094505050505092915050565b608081526000612a2b608083018761283d565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a6457600080fd5b8151610e5281612305565b604081526000612a82604083018561283d565b90506001600160401b03831660208301529392505050565b600060408284031215612aac57600080fd5b612ab46123ac565b9050815181526020820151602082015292915050565b60008060808385031215612add57600080fd5b612ae78484612a9a565b9150612af68460408501612a9a565b90509250929050565b8082018082111561073f5761073f6126c6565b81835260006020808501808196508560051b810191508460005b87811015612b965782840389528135601e19883603018112612b4d57600080fd5b870185810190356001600160401b03811115612b6857600080fd5b803603821315612b7757600080fd5b612b8286828461270c565b9a87019a9550505090840190600101612b2c565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612bec9083018587612b12565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612c4e81602a850160208801612819565b660103b30b63ab2960cd1b602a918401918201528351612c75816031840160208801612819565b01603101949350505050565b85815260a060208201526000612c9a60a083018761283d565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612cdf57600080fd5b8251612cea81612175565b6020939093015192949293505050565b608081526000612d0d608083018761283d565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d6a816017850160208801612819565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d9b816028840160208801612819565b01602801949350505050565b60008251612db9818460208701612819565b9190910192915050565b838152604060208201526000612ddd604083018486612b12565b95945050505050565b60006020808385031215612df957600080fd5b82516001600160401b0380821115612e1057600080fd5b818501915085601f830112612e2457600080fd5b815181811115612e3657612e36612396565b8060051b612e458582016123f6565b9182528381018501918581019089841115612e5f57600080fd5b86860192505b83831015612eb057825185811115612e7d5760008081fd5b8601603f81018b13612e8f5760008081fd5b612ea08b898301516040840161287c565b8352509186019190860190612e65565b9998505050505050505050565b60008251612ecf818460208701612819565b63173937b760e11b920191825250600401919050565b6001600160a01b03831681526040602082018190526000906125b49083018461283d565b600060208284031215612f1b57600080fd5b5051919050565b808202811582820484141761073f5761073f6126c6565b600081612f4857612f486126c6565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203a109c3a44f7a0139823c421a40975bf8029ef66d689d4458e4d45cf8a5dbf8264736f6c63430008150033", + "callValue": 0, "chainId": 2021, + "constructorArgs": "0x", "contractName": "RONRegistrarController", - "deployedBytecode": "0x6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a61024536600461207d565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120a7565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d6103583660046120d5565b610745565b005b34801561036b57600080fd5b5061035d61037a3660046120d5565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b83660046120d5565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612105565b610815565b61035d61043b366004612137565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d6104733660046121b9565b6109d8565b34801561048457600080fd5b5061035d6104933660046122c0565b610b84565b3480156104a457600080fd5b5061035d610cbd565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d9366004612450565b610cdd565b3480156104ea57600080fd5b506102a26104f936600461250b565b610e3e565b34801561050a57600080fd5b5061024a6105193660046120d5565b610e5d565b34801561052a57600080fd5b5061024a61053936600461252d565b610e88565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e36600461252d565b610f16565b34801561057f57600080fd5b5061027361058e366004612569565b610fa1565b34801561059f57600080fd5b5061035d6105ae3660046120a7565b611051565b3480156105bf57600080fd5b506103086105ce3660046120a7565b611065565b61035d6105e13660046125af565b61107c565b3480156105f257600080fd5b5061035d6106013660046120d5565b611188565b34801561061257600080fd5b506103086106213660046125af565b6111ad565b34801561063257600080fd5b5061035d61064136600461250b565b611239565b34801561065257600080fd5b50610308600080516020612f1483398151915281565b34801561067457600080fd5b5061035d610683366004612105565b61124e565b34801561069457600080fd5b5061035d6106a33660046120a7565b61127c565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f736600461252d565b6112d5565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f82611312565b92915050565b60008281526002602052604090206001015461076081611347565b61076a8383611351565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611373565b5050565b600080516020612f1483398151915261080a81611347565b610812611395565b50565b600061082081611347565b6107ee826113e7565b61083161143e565b610839611486565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610fa1915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac8234612689565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112d592505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610973919061269c565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab94939291906126e2565b60405180910390a282156109c3576109c333846114df565b6109cb611544565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f148339815191528b61155a565b610aca60008c61155a565b610ad3836113e7565b610adc86611564565b610ae6878961159b565b603980546001600160a01b03808c166001600160a01b031992831617909255603a8054888416908316179055603b8054878416908316179055603d8054928516929091169190911790558015610b77576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610bae81611347565b84801580610bbc5750808414155b15610bda57604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c6a5783603f60008a8a85818110610bfc57610bfc612716565b9050602002013581526020019081526020016000206000888885818110610c2557610c25612716565b9050602002016020810190610c3a9190612105565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bdd565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610cac95949392919061272c565b60405180910390a250505050505050565b600080516020612f14833981519152610cd581611347565b610812611625565b610ce561143e565b610ced611486565b86610cf781611662565b610d0088610f16565b610d1f57876040516308eee0fd60e31b81526004016107db9190612816565b6000610d2a896112d5565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610da191908101906128e3565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dde575080155b15610e04578a8a8383604051631fc5717160e01b81526004016107db94939291906129c5565b600080610e118d8c61168a565b91509150610e268d8d8d8d8d8d8d89896116e2565b505050505050610e3560018055565b50505050505050565b6000828152600360205260408120610e56908361180c565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e9583611818565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610ece908590600401612816565b602060405180830381865afa158015610eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0f91906129ff565b1592915050565b6000610f2182610e88565b801561073f5750603a546001600160a01b03166396e494e8610f42846112d5565b6040518263ffffffff1660e01b8152600401610f6091815260200190565b602060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906129ff565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fdc9089908990600401612a1c565b608060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d9190612a77565b8051825192945090925061103091612aac565b9350806020015182602001516110469190612aac565b925050509250929050565b600061105c81611347565b6107ee82611564565b600081815260036020526040812061073f90611906565b61108461143e565b61108c611486565b6000611097896112d5565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261110991908101906128e3565b60200151606001511561113157886040516331597a5760e21b81526004016107db9190612816565b60006111438a8a8a8a8a8a8a8a6111ad565b905061114f8882611910565b60008061115c8c8b61168a565b915091506111718c8c8c8b8b8b8b89896116e2565b5050505061117e60018055565b5050505050505050565b6000828152600260205260409020600101546111a381611347565b61076a8383611373565b6000886111b981611662565b83158015906111cf57506001600160a01b038616155b156111ed576040516334fd817160e21b815260040160405180910390fd5b6111f68a6112d5565b89898989898989604051602001611214989796959493929190612b50565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124481611347565b61076a838361159b565b600061125981611347565b50603980546001600160a01b0319166001600160a01b0392909216919091179055565b61128461143e565b6037546000828152603e602052604090205442916112a191612aac565b106112c257604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b61081281336119c1565b61135b82826119f4565b600082815260036020526040902061076a9082611a7a565b61137d8282611a8f565b600082815260036020526040902061076a9082611af6565b61139d611b0b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114845760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114d85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114eb8383611b54565b90508061076a57611504836001600160a01b0316611bca565b61150d83611be0565b60405160200161151e929190612bb0565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612816565b603954611484906001600160a01b0316476114df565b6107ee8282611351565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611433565b428111156115bc57604051630b4319e560e21b815260040160405180910390fd5b8181116115dc576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b61162d61143e565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ca3390565b61166b81610f16565b61081257806040516308eee0fd60e31b81526004016107db9190612816565b6000806116978484610fa1565b9092509050348111156116bd5760405163044044a560e21b815260040160405180910390fd5b348181039082146116d2576116d233826114df565b506116db611544565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b815260040161174e959493929190612c2e565b60408051808303816000875af115801561176c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117909190612c79565b909250905085156117a7576117a788828989611bf7565b84156117b7576117b78b8b611c75565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d8688876040516117f79493929190612ca7565b60405180910390a35050505050505050505050565b6000610e568383611d0c565b600080600080845190505b808310156118fe57600085848151811061183f5761183f612716565b01602001516001600160f81b0319169050600160ff1b811015611867576001840193506118f2565b600760fd1b6001600160f81b031982161015611888576002840193506118f2565b600f60fc1b6001600160f81b0319821610156118a9576003840193506118f2565b601f60fb1b6001600160f81b0319821610156118ca576004840193506118f2565b603f60fa1b6001600160f81b0319821610156118eb576005840193506118f2565b6006840193505b50600190910190611823565b509392505050565b600061073f825490565b603854826001600160401b03161015611947576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119609042612689565b905060365481101561198857604051635320bcf960e01b8152600481018390526024016107db565b8060375410156119ae5760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b6119cb8282610e5d565b6107ee576119d881611bca565b6119e3836020611d36565b60405160200161151e929190612cdf565b6119fe8282610e5d565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a363390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e56836001600160a01b038416611ed1565b611a998282610e5d565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e56836001600160a01b038416611f20565b60005460ff166114845760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611b7e9190612d54565b60006040518083038185875af1925050503d8060008114611bbb576040519150601f19603f3d011682016040523d82523d6000602084013e611bc0565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d36565b606061073f82611bef84612013565b600101611d36565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c2790869086908690600401612d70565b6000604051808303816000875af1158015611c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c6e9190810190612d93565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611c9d908690602001612e6a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611cc9929190612e92565b6020604051808303816000875af1158015611ce8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612eb6565b6000826000018281548110611d2357611d23612716565b9060005260206000200154905092915050565b60606000611d45836002612ecf565b611d50906002612aac565b6001600160401b03811115611d6757611d67612343565b6040519080825280601f01601f191660200182016040528015611d91576020820181803683370190505b509050600360fc1b81600081518110611dac57611dac612716565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ddb57611ddb612716565b60200101906001600160f81b031916908160001a9053506000611dff846002612ecf565b611e0a906001612aac565b90505b6001811115611e82576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e3e57611e3e612716565b1a60f81b828281518110611e5457611e54612716565b60200101906001600160f81b031916908160001a90535060049490941c93611e7b81612ee6565b9050611e0d565b508315610e565760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f185750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b60008181526001830160205260408120548015612009576000611f44600183612689565b8554909150600090611f5890600190612689565b9050818114611fbd576000866000018281548110611f7857611f78612716565b9060005260206000200154905080876000018481548110611f9b57611f9b612716565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fce57611fce612efd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561202b5760809290921c916010015b604083901c156120405760409290921c916008015b602083901c156120555760209290921c916004015b601083901c1561206a5760109290921c916002015b600883901c1561073f5760010192915050565b60006020828403121561208f57600080fd5b81356001600160e01b031981168114610e5657600080fd5b6000602082840312156120b957600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b600080604083850312156120e857600080fd5b8235915060208301356120fa816120c0565b809150509250929050565b60006020828403121561211757600080fd5b8135610e56816120c0565b6001600160401b038116811461081257600080fd5b60008060006040848603121561214c57600080fd5b83356001600160401b038082111561216357600080fd5b818601915086601f83011261217757600080fd5b81358181111561218657600080fd5b87602082850101111561219857600080fd5b602092830195509350508401356121ae81612122565b809150509250925092565b6000806000806000806000806000806101408b8d0312156121d957600080fd5b8a356121e4816120c0565b995060208b01356121f4816120c0565b985060408b0135612204816120c0565b975060608b0135965060808b0135955060a08b0135945060c08b0135612229816120c0565b935060e08b0135612239816120c0565b92506101008b013561224a816120c0565b91506101208b013561225b816120c0565b809150509295989b9194979a5092959850565b60008083601f84011261228057600080fd5b5081356001600160401b0381111561229757600080fd5b6020830191508360208260051b85010111156116db57600080fd5b801515811461081257600080fd5b6000806000806000606086880312156122d857600080fd5b85356001600160401b03808211156122ef57600080fd5b6122fb89838a0161226e565b9097509550602088013591508082111561231457600080fd5b506123218882890161226e565b9094509250506040860135612335816122b2565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561237b5761237b612343565b60405290565b604051606081016001600160401b038111828210171561237b5761237b612343565b604051601f8201601f191681016001600160401b03811182821017156123cb576123cb612343565b604052919050565b60006001600160401b038211156123ec576123ec612343565b50601f01601f191660200190565b600082601f83011261240b57600080fd5b813561241e612419826123d3565b6123a3565b81815284602083860101111561243357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a03121561246b57600080fd5b87356001600160401b038082111561248257600080fd5b61248e8b838c016123fa565b985060208a013591506124a0826120c0565b9096506040890135906124b282612122565b9095506060890135906124c4826120c0565b909450608089013590808211156124da57600080fd5b506124e78a828b0161226e565b90945092505060a08801356124fb816122b2565b8091505092959891949750929550565b6000806040838503121561251e57600080fd5b50508035926020909101359150565b60006020828403121561253f57600080fd5b81356001600160401b0381111561255557600080fd5b612561848285016123fa565b949350505050565b6000806040838503121561257c57600080fd5b82356001600160401b0381111561259257600080fd5b61259e858286016123fa565b92505060208301356120fa81612122565b60008060008060008060008060e0898b0312156125cb57600080fd5b88356001600160401b03808211156125e257600080fd5b6125ee8c838d016123fa565b995060208b01359150612600826120c0565b90975060408a01359061261282612122565b90965060608a0135955060808a01359061262b826120c0565b90945060a08a0135908082111561264157600080fd5b5061264e8b828c0161226e565b90945092505060c0890135612662816122b2565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f612673565b6000602082840312156126ae57600080fd5b8151610e5681612122565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006126f66060830186886126b9565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561274c57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127a957833561278c816120c0565b6001600160a01b0316815292810192600192909201918101612779565b861515604087015293506127bc92505050565b9695505050505050565b60005b838110156127e15781810151838201526020016127c9565b50506000910152565b600081518084526128028160208601602086016127c6565b601f01601f19169290920160200192915050565b602081526000610e5660208301846127ea565b6000612837612419846123d3565b905082815283838301111561284b57600080fd5b610e568360208301846127c6565b60006080828403121561286b57600080fd5b604051608081018181106001600160401b038211171561288d5761288d612343565b806040525080915082516128a0816120c0565b815260208301516128b0816120c0565b602082015260408301516128c381612122565b604082015260608301516128d6816122b2565b6060919091015292915050565b600060208083850312156128f657600080fd5b82516001600160401b038082111561290d57600080fd5b9084019060a0828703121561292157600080fd5b612929612359565b82518281111561293857600080fd5b83016060818903121561294a57600080fd5b612952612381565b815160ff8116811461296357600080fd5b8152818601518682015260408201518481111561297f57600080fd5b82019350601f8401891361299257600080fd5b6129a0898551888701612829565b60408201528252506129b487848601612859565b848201528094505050505092915050565b6080815260006129d860808301876127ea565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a1157600080fd5b8151610e56816122b2565b604081526000612a2f60408301856127ea565b90506001600160401b03831660208301529392505050565b600060408284031215612a5957600080fd5b612a61612359565b9050815181526020820151602082015292915050565b60008060808385031215612a8a57600080fd5b612a948484612a47565b9150612aa38460408501612a47565b90509250929050565b8082018082111561073f5761073f612673565b81835260006020808501808196508560051b810191508460005b87811015612b435782840389528135601e19883603018112612afa57600080fd5b870185810190356001600160401b03811115612b1557600080fd5b803603821315612b2457600080fd5b612b2f8682846126b9565b9a87019a9550505090840190600101612ad9565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612b999083018587612abf565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612bfb81602a8501602088016127c6565b660103b30b63ab2960cd1b602a918401918201528351612c228160318401602088016127c6565b01603101949350505050565b85815260a060208201526000612c4760a08301876127ea565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612c8c57600080fd5b8251612c9781612122565b6020939093015192949293505050565b608081526000612cba60808301876127ea565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d178160178501602088016127c6565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d488160288401602088016127c6565b01602801949350505050565b60008251612d668184602087016127c6565b9190910192915050565b838152604060208201526000612d8a604083018486612abf565b95945050505050565b60006020808385031215612da657600080fd5b82516001600160401b0380821115612dbd57600080fd5b818501915085601f830112612dd157600080fd5b815181811115612de357612de3612343565b8060051b612df28582016123a3565b9182528381018501918581019089841115612e0c57600080fd5b86860192505b83831015612e5d57825185811115612e2a5760008081fd5b8601603f81018b13612e3c5760008081fd5b612e4d8b8983015160408401612829565b8352509186019190860190612e12565b9998505050505050505050565b60008251612e7c8184602087016127c6565b63173937b760e11b920191825250600401919050565b6001600160a01b0383168152604060208201819052600090612561908301846127ea565b600060208284031215612ec857600080fd5b5051919050565b808202811582820484141761073f5761073f612673565b600081612ef557612ef5612673565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa264697066735822122006f996c081232038f43c5a1b7c3f11015820d9739a2a8d4b25e938ce2da8ea5764736f6c63430008150033", + "deployedBytecode": "0x6080604052600436106102255760003560e01c80638ca3d18311610123578063cb80fe2f116100ab578063f0f442601161006f578063f0f4426014610668578063f14fcbc814610688578063f5b541a6146106a8578063fb021939146106dc578063fca513a8146106fc57600080fd5b8063cb80fe2f146105d3578063d547741f146105e6578063db9bf5ed14610606578063e4214b4614610626578063e63ab1e91461064657600080fd5b8063a217fddf116100f2578063a217fddf1461053e578063aeb8ce9b14610553578063b24b17b014610573578063c078f16a14610593578063ca15c873146105b357600080fd5b80638ca3d183146104cb5780639010d07c146104de57806391d14854146104fe5780639791c0971461051e57600080fd5b80633b6c2ea3116101b15780635c975abb116101755780635c975abb1461044057806364c65705146104585780636df99353146104785780638456cb59146104985780638c843314146104ad57600080fd5b80633b6c2ea31461039d5780633f4ba83a146103e357806342c20288146103f8578063530e784f1461040d5780635a7051691461042d57600080fd5b8063248a9ca3116101f8578063248a9ca3146102d857806329aa4f51146103165780632f2ff15d1461033d57806336568abe1461035f5780633b19e84a1461037f57600080fd5b806301ffc9a71461022a5780631321889f1461025f578063224b04de14610288578063237a78fb146102ba575b600080fd5b34801561023657600080fd5b5061024a6102453660046120d0565b61071a565b60405190151581526020015b60405180910390f35b34801561026b57600080fd5b506036546037545b60408051928352602083019190915201610256565b34801561029457600080fd5b50603b546001600160a01b03165b6040516001600160a01b039091168152602001610256565b3480156102c657600080fd5b50603d546001600160a01b03166102a2565b3480156102e457600080fd5b506103086102f33660046120fa565b60009081526002602052604090206001015490565b604051908152602001610256565b34801561032257600080fd5b5061032b600381565b60405160ff9091168152602001610256565b34801561034957600080fd5b5061035d610358366004612128565b610745565b005b34801561036b57600080fd5b5061035d61037a366004612128565b61076f565b34801561038b57600080fd5b506039546001600160a01b03166102a2565b3480156103a957600080fd5b5061024a6103b8366004612128565b6000918252603f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103ef57600080fd5b5061035d6107f2565b34801561040457600080fd5b50603854610308565b34801561041957600080fd5b5061035d610428366004612158565b610815565b61035d61043b36600461218a565b610829565b34801561044c57600080fd5b5060005460ff1661024a565b34801561046457600080fd5b5061035d61047336600461220c565b6109d8565b34801561048457600080fd5b5061035d610493366004612313565b610b80565b3480156104a457600080fd5b5061035d610cb9565b3480156104b957600080fd5b50603a546001600160a01b03166102a2565b61035d6104d93660046124a3565b610cd9565b3480156104ea57600080fd5b506102a26104f936600461255e565b610e3a565b34801561050a57600080fd5b5061024a610519366004612128565b610e59565b34801561052a57600080fd5b5061024a610539366004612580565b610e84565b34801561054a57600080fd5b50610308600081565b34801561055f57600080fd5b5061024a61056e366004612580565b610f12565b34801561057f57600080fd5b5061027361058e3660046125bc565b610f9d565b34801561059f57600080fd5b5061035d6105ae3660046120fa565b61104d565b3480156105bf57600080fd5b506103086105ce3660046120fa565b611061565b61035d6105e1366004612602565b611078565b3480156105f257600080fd5b5061035d610601366004612128565b611184565b34801561061257600080fd5b50610308610621366004612602565b6111a9565b34801561063257600080fd5b5061035d61064136600461255e565b611235565b34801561065257600080fd5b50610308600080516020612f6783398151915281565b34801561067457600080fd5b5061035d610683366004612158565b61124a565b34801561069457600080fd5b5061035d6106a33660046120fa565b61125e565b3480156106b457600080fd5b506103087f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b3480156106e857600080fd5b506103086106f7366004612580565b6112b7565b34801561070857600080fd5b50603c546001600160a01b03166102a2565b60006001600160e01b03198216635a05180f60e01b148061073f575061073f826112f4565b92915050565b60008281526002602052604090206001015461076081611329565b61076a8383611333565b505050565b6001600160a01b03811633146107e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ee8282611355565b5050565b600080516020612f6783398151915261080a81611329565b610812611377565b50565b600061082081611329565b6107ee826113c9565b610831611420565b610839611468565b600061087c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250610f9d915050565b915050803410156108a05760405163044044a560e21b815260040160405180910390fd5b60006108ac82346126dc565b905060006108ef86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112b792505050565b603a54604051635569f33d60e01b8152600481018390526001600160401b03871660248201529192506000916001600160a01b0390911690635569f33d906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906126ef565b9050817fda0eda2cd32a098c8b27ed6a56aeb5c332b8abb98491f4357ea58e118b724c6d888887856040516109ab9493929190612735565b60405180910390a282156109c3576109c333846114c1565b6109cb611526565b5050505061076a60018055565b60005462010000900460ff16158080156109fd5750600054600161010090910460ff16105b80610a1d5750303b158015610a1d575060005460ff610100909104166001145b610a805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107db565b6000805461ff0019166101001790558015610aa7576000805462ff00001916620100001790555b610abf600080516020612f678339815191528b61153c565b610aca60008c61153c565b610ad3836113c9565b610adc86611546565b610ae6878961157d565b610aef89611607565b603a80546001600160a01b038088166001600160a01b031992831617909255603b8054878416908316179055603d8054928516929091169190911790558015610b73576000805462ff000019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610baa81611329565b84801580610bb85750808414155b15610bd657604051634ec4810560e11b815260040160405180910390fd5b60005b81811015610c665783603f60008a8a85818110610bf857610bf8612769565b9050602002013581526020019081526020016000206000888885818110610c2157610c21612769565b9050602002016020810190610c369190612158565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610bd9565b50336001600160a01b03167fb04cd4173c4030a0f2bf2acabc9484f9014ecf5654be55afb48f3694c0804e3b8888888888604051610ca895949392919061277f565b60405180910390a250505050505050565b600080516020612f67833981519152610cd181611329565b610812611678565b610ce1611420565b610ce9611468565b86610cf3816116b5565b610cfc88610f12565b610d1b57876040516308eee0fd60e31b81526004016107db9190612869565b6000610d26896112b7565b603a546040516303e9e60960e01b8152600481018390529192506000916001600160a01b03909116906303e9e60990602401600060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9d9190810190612936565b602090810151606001516000848152603f835260408082206001600160a01b038e168352909352919091205490915060ff16811580610dda575080155b15610e00578a8a8383604051631fc5717160e01b81526004016107db9493929190612a18565b600080610e0d8d8c6116dd565b91509150610e228d8d8d8d8d8d8d8989611735565b505050505050610e3160018055565b50505050505050565b6000828152600360205260408120610e52908361185f565b9392505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006003610e918361186b565b1015801561073f5750603b546040516303f6911960e21b81526001600160a01b0390911690630fda446490610eca908590600401612869565b602060405180830381865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612a52565b1592915050565b6000610f1d82610e84565b801561073f5750603a546001600160a01b03166396e494e8610f3e846112b7565b6040518263ffffffff1660e01b8152600401610f5c91815260200190565b602060405180830381865afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f9190612a52565b603c5460405163f4651f4960e01b81526000918291829182916001600160a01b039091169063f4651f4990610fd89089908990600401612a6f565b608060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190612aca565b8051825192945090925061102c91612aff565b9350806020015182602001516110429190612aff565b925050509250929050565b600061105881611329565b6107ee82611546565b600081815260036020526040812061073f90611959565b611080611420565b611088611468565b6000611093896112b7565b603a546040516303e9e60960e01b8152600481018390529192506001600160a01b0316906303e9e60990602401600060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111059190810190612936565b60200151606001511561112d57886040516331597a5760e21b81526004016107db9190612869565b600061113f8a8a8a8a8a8a8a8a6111a9565b905061114b8882611963565b6000806111588c8b6116dd565b9150915061116d8c8c8c8b8b8b8b8989611735565b5050505061117a60018055565b5050505050505050565b60008281526002602052604090206001015461119f81611329565b61076a8383611355565b6000886111b5816116b5565b83158015906111cb57506001600160a01b038616155b156111e9576040516334fd817160e21b815260040160405180910390fd5b6111f28a6112b7565b89898989898989604051602001611210989796959493929190612ba3565b6040516020818303038152906040528051906020012091505098975050505050505050565b600061124081611329565b61076a838361157d565b600061125581611329565b6107ee82611607565b611266611420565b6037546000828152603e6020526040902054429161128391612aff565b106112a457604051630a059d7160e01b8152600481018290526024016107db565b6000908152603e60205260409020429055565b600061073f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688836000918252805160209182012090526040902090565b60006001600160e01b03198216637965db0b60e01b148061073f57506301ffc9a760e01b6001600160e01b031983161461073f565b6108128133611a14565b61133d8282611a47565b600082815260036020526040902061076a9082611acd565b61135f8282611ae2565b600082815260036020526040902061076a9082611b49565b61137f611b5e565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603c80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fa0e5780c6b121c723ec81de517e849c838390affbdc0a70680a3065e47ff3655906020015b60405180910390a250565b60005460ff16156114665760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107db565b565b6002600154036114ba5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107db565b6002600155565b60006114cd8383611ba7565b90508061076a576114e6836001600160a01b0316611c1d565b6114ef83611c33565b604051602001611500929190612c03565b60408051601f198184030181529082905262461bcd60e51b82526107db91600401612869565b603954611466906001600160a01b0316476114c1565b6107ee8282611333565b603881905560405181815233907f59dadbf6542974405b3c262294675f8dd6fb933e6e6556b04b41aaac6e42352c90602001611415565b4281111561159e57604051630b4319e560e21b815260040160405180910390fd5b8181116115be576040516307cb550760e31b815260040160405180910390fd5b60368290556037819055604080518381526020810183905233917f26a34e9441e83658dfe0e99d79186a1f7cb28c0867d3caddf5cd8b79844adf8f910160405180910390a25050565b6001600160a01b03811661162e5760405163e99d5ac560e01b815260040160405180910390fd5b603980546001600160a01b0319166001600160a01b0383169081179091556040517f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190600090a250565b611680611420565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ac3390565b6116be81610f12565b61081257806040516308eee0fd60e31b81526004016107db9190612869565b6000806116ea8484610f9d565b9092509050348111156117105760405163044044a560e21b815260040160405180910390fd5b348181039082146117255761172533826114c1565b5061172e611526565b9250929050565b600080603a60009054906101000a90046001600160a01b03166001600160a01b0316630570891f7fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888d8b8e8e6040518663ffffffff1660e01b81526004016117a1959493929190612c81565b60408051808303816000875af11580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190612ccc565b909250905085156117fa576117fa88828989611c4a565b841561180a5761180a8b8b611cc8565b896001600160a01b0316817f8b0e0cd1a643dbca06e60f7e03e5ff3c4e72b78e1c9842b5c3a29ad3ce8d384b8d86888760405161184a9493929190612cfa565b60405180910390a35050505050505050505050565b6000610e528383611d5f565b600080600080845190505b8083101561195157600085848151811061189257611892612769565b01602001516001600160f81b0319169050600160ff1b8110156118ba57600184019350611945565b600760fd1b6001600160f81b0319821610156118db57600284019350611945565b600f60fc1b6001600160f81b0319821610156118fc57600384019350611945565b601f60fb1b6001600160f81b03198216101561191d57600484019350611945565b603f60fa1b6001600160f81b03198216101561193e57600584019350611945565b6006840193505b50600190910190611876565b509392505050565b600061073f825490565b603854826001600160401b0316101561199a576040516378a3dfc160e11b81526001600160401b03831660048201526024016107db565b6000818152603e60205260408120546119b390426126dc565b90506036548110156119db57604051635320bcf960e01b8152600481018390526024016107db565b806037541015611a015760405163cb7690d760e01b8152600481018390526024016107db565b506000908152603e602052604081205550565b611a1e8282610e59565b6107ee57611a2b81611c1d565b611a36836020611d89565b604051602001611500929190612d32565b611a518282610e59565b6107ee5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611a893390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e52836001600160a01b038416611f24565b611aec8282610e59565b156107ee5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e52836001600160a01b038416611f73565b60005460ff166114665760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107db565b604080516000808252602082019092526001600160a01b038416908390604051611bd19190612da7565b60006040518083038185875af1925050503d8060008114611c0e576040519150601f19603f3d011682016040523d82523d6000602084013e611c13565b606091505b5090949350505050565b606061073f6001600160a01b0383166014611d89565b606061073f82611c4284612066565b600101611d89565b60405163e32954eb60e01b81526001600160a01b0385169063e32954eb90611c7a90869086908690600401612dc3565b6000604051808303816000875af1158015611c99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc19190810190612de6565b5050505050565b603d546040516001600160a01b039091169063c9119941908390611cf0908690602001612ebd565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401611d1c929190612ee5565b6020604051808303816000875af1158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190612f09565b6000826000018281548110611d7657611d76612769565b9060005260206000200154905092915050565b60606000611d98836002612f22565b611da3906002612aff565b6001600160401b03811115611dba57611dba612396565b6040519080825280601f01601f191660200182016040528015611de4576020820181803683370190505b509050600360fc1b81600081518110611dff57611dff612769565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e2e57611e2e612769565b60200101906001600160f81b031916908160001a9053506000611e52846002612f22565b611e5d906001612aff565b90505b6001811115611ed5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e9157611e91612769565b1a60f81b828281518110611ea757611ea7612769565b60200101906001600160f81b031916908160001a90535060049490941c93611ece81612f39565b9050611e60565b508315610e525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107db565b6000818152600183016020526040812054611f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561073f565b50600061073f565b6000818152600183016020526040812054801561205c576000611f976001836126dc565b8554909150600090611fab906001906126dc565b9050818114612010576000866000018281548110611fcb57611fcb612769565b9060005260206000200154905080876000018481548110611fee57611fee612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061202157612021612f50565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061073f565b600091505061073f565b600080608083901c1561207e5760809290921c916010015b604083901c156120935760409290921c916008015b602083901c156120a85760209290921c916004015b601083901c156120bd5760109290921c916002015b600883901c1561073f5760010192915050565b6000602082840312156120e257600080fd5b81356001600160e01b031981168114610e5257600080fd5b60006020828403121561210c57600080fd5b5035919050565b6001600160a01b038116811461081257600080fd5b6000806040838503121561213b57600080fd5b82359150602083013561214d81612113565b809150509250929050565b60006020828403121561216a57600080fd5b8135610e5281612113565b6001600160401b038116811461081257600080fd5b60008060006040848603121561219f57600080fd5b83356001600160401b03808211156121b657600080fd5b818601915086601f8301126121ca57600080fd5b8135818111156121d957600080fd5b8760208285010111156121eb57600080fd5b6020928301955093505084013561220181612175565b809150509250925092565b6000806000806000806000806000806101408b8d03121561222c57600080fd5b8a3561223781612113565b995060208b013561224781612113565b985060408b013561225781612113565b975060608b0135965060808b0135955060a08b0135945060c08b013561227c81612113565b935060e08b013561228c81612113565b92506101008b013561229d81612113565b91506101208b01356122ae81612113565b809150509295989b9194979a5092959850565b60008083601f8401126122d357600080fd5b5081356001600160401b038111156122ea57600080fd5b6020830191508360208260051b850101111561172e57600080fd5b801515811461081257600080fd5b60008060008060006060868803121561232b57600080fd5b85356001600160401b038082111561234257600080fd5b61234e89838a016122c1565b9097509550602088013591508082111561236757600080fd5b50612374888289016122c1565b909450925050604086013561238881612305565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156123ce576123ce612396565b60405290565b604051606081016001600160401b03811182821017156123ce576123ce612396565b604051601f8201601f191681016001600160401b038111828210171561241e5761241e612396565b604052919050565b60006001600160401b0382111561243f5761243f612396565b50601f01601f191660200190565b600082601f83011261245e57600080fd5b813561247161246c82612426565b6123f6565b81815284602083860101111561248657600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060c0888a0312156124be57600080fd5b87356001600160401b03808211156124d557600080fd5b6124e18b838c0161244d565b985060208a013591506124f382612113565b90965060408901359061250582612175565b90955060608901359061251782612113565b9094506080890135908082111561252d57600080fd5b5061253a8a828b016122c1565b90945092505060a088013561254e81612305565b8091505092959891949750929550565b6000806040838503121561257157600080fd5b50508035926020909101359150565b60006020828403121561259257600080fd5b81356001600160401b038111156125a857600080fd5b6125b48482850161244d565b949350505050565b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f18582860161244d565b925050602083013561214d81612175565b60008060008060008060008060e0898b03121561261e57600080fd5b88356001600160401b038082111561263557600080fd5b6126418c838d0161244d565b995060208b0135915061265382612113565b90975060408a01359061266582612175565b90965060608a0135955060808a01359061267e82612113565b90945060a08a0135908082111561269457600080fd5b506126a18b828c016122c1565b90945092505060c08901356126b581612305565b809150509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073f5761073f6126c6565b60006020828403121561270157600080fd5b8151610e5281612175565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600061274960608301868861270c565b90508360208301526001600160401b038316604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b6060808252810185905260006001600160fb1b0386111561279f57600080fd5b8560051b8088608085013760809083018381038201602080860191909152918101869052869160009160a0015b878310156127fc5783356127df81612113565b6001600160a01b03168152928101926001929092019181016127cc565b8615156040870152935061280f92505050565b9695505050505050565b60005b8381101561283457818101518382015260200161281c565b50506000910152565b60008151808452612855816020860160208601612819565b601f01601f19169290920160200192915050565b602081526000610e52602083018461283d565b600061288a61246c84612426565b905082815283838301111561289e57600080fd5b610e52836020830184612819565b6000608082840312156128be57600080fd5b604051608081018181106001600160401b03821117156128e0576128e0612396565b806040525080915082516128f381612113565b8152602083015161290381612113565b6020820152604083015161291681612175565b6040820152606083015161292981612305565b6060919091015292915050565b6000602080838503121561294957600080fd5b82516001600160401b038082111561296057600080fd5b9084019060a0828703121561297457600080fd5b61297c6123ac565b82518281111561298b57600080fd5b83016060818903121561299d57600080fd5b6129a56123d4565b815160ff811681146129b657600080fd5b815281860151868201526040820151848111156129d257600080fd5b82019350601f840189136129e557600080fd5b6129f389855188870161287c565b6040820152825250612a07878486016128ac565b848201528094505050505092915050565b608081526000612a2b608083018761283d565b6001600160a01b039590951660208301525091151560408301521515606090910152919050565b600060208284031215612a6457600080fd5b8151610e5281612305565b604081526000612a82604083018561283d565b90506001600160401b03831660208301529392505050565b600060408284031215612aac57600080fd5b612ab46123ac565b9050815181526020820151602082015292915050565b60008060808385031215612add57600080fd5b612ae78484612a9a565b9150612af68460408501612a9a565b90509250929050565b8082018082111561073f5761073f6126c6565b81835260006020808501808196508560051b810191508460005b87811015612b965782840389528135601e19883603018112612b4d57600080fd5b870185810190356001600160401b03811115612b6857600080fd5b803603821315612b7757600080fd5b612b8286828461270c565b9a87019a9550505090840190600101612b2c565b5091979650505050505050565b8881526001600160a01b0388811660208301526001600160401b0388166040830152606082018790528516608082015260e060a08201819052600090612bec9083018587612b12565b905082151560c08301529998505050505050505050565b7f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e7366815269032b9102927a7103a37960b51b602082015260008351612c4e81602a850160208801612819565b660103b30b63ab2960cd1b602a918401918201528351612c75816031840160208801612819565b01603101949350505050565b85815260a060208201526000612c9a60a083018761283d565b6001600160a01b0395861660408401529390941660608201526001600160401b03919091166080909101529392505050565b60008060408385031215612cdf57600080fd5b8251612cea81612175565b6020939093015192949293505050565b608081526000612d0d608083018761283d565b60208301959095525060408101929092526001600160401b0316606090910152919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612d6a816017850160208801612819565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612d9b816028840160208801612819565b01602801949350505050565b60008251612db9818460208701612819565b9190910192915050565b838152604060208201526000612ddd604083018486612b12565b95945050505050565b60006020808385031215612df957600080fd5b82516001600160401b0380821115612e1057600080fd5b818501915085601f830112612e2457600080fd5b815181811115612e3657612e36612396565b8060051b612e458582016123f6565b9182528381018501918581019089841115612e5f57600080fd5b86860192505b83831015612eb057825185811115612e7d5760008081fd5b8601603f81018b13612e8f5760008081fd5b612ea08b898301516040840161287c565b8352509186019190860190612e65565b9998505050505050505050565b60008251612ecf818460208701612819565b63173937b760e11b920191825250600401919050565b6001600160a01b03831681526040602082018190526000906125b49083018461283d565b600060208284031215612f1b57600080fd5b5051919050565b808202811582820484141761073f5761073f6126c6565b600081612f4857612f486126c6565b506000190190565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212203a109c3a44f7a0139823c421a40975bf8029ef66d689d4458e4d45cf8a5dbf8264736f6c63430008150033", "deployer": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", "devdoc": { "version": 1, @@ -15954,6 +1409,9 @@ "RoleRevoked(bytes32,address,address)": { "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)" }, + "TreasuryUpdated(address)": { + "details": "Emitted when the treasury is updated." + }, "Unpaused(address)": { "details": "Emitted when the pause is lifted by `account`." } @@ -16009,6 +1467,11 @@ "details": "Error: The requested name is not available for registration." } ], + "NullAddress()": [ + { + "details": "Thrown when treasury address is set to null" + } + ], "ResolverRequiredWhenDataSupplied()": [ { "details": "Error: A resolver is required when additional data is supplied during registration." @@ -16028,13 +1491,12 @@ "title": "RONRegistrarController" }, "isFoundry": true, - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooNew\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooOld\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"DurationTooShort\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"requestOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"nameProtected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerWhitelisted\",\"type\":\"bool\"}],\"name\":\"ErrInvalidRegisterProtectedName\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ErrRequestedForProtectedName\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameNotAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverRequiredWhenDataSupplied\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"UnexpiredCommitmentExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"name\":\"CommitmentAgeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract INSDomainPrice\",\"name\":\"newDomainPrice\",\"type\":\"address\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"MinRegistrationDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"NameRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ProtectedNamesWhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_DOMAIN_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"bulkWhitelistProtectedNames\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"computeCommitment\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"computeId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommitmentAgeRange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinRegistrationDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNameChecker\",\"outputs\":[{\"internalType\":\"contract INameChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceOracle\",\"outputs\":[{\"internalType\":\"contract INSDomainPrice\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRNSUnified\",\"outputs\":[{\"internalType\":\"contract INSUnified\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReverseRegistrar\",\"outputs\":[{\"internalType\":\"contract INSReverseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"getWhitelistProtectedNameStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"treasury\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minRegistrationDuration\",\"type\":\"uint256\"},{\"internalType\":\"contract INSUnified\",\"name\":\"rnsUnified\",\"type\":\"address\"},{\"internalType\":\"contract INameChecker\",\"name\":\"nameChecker\",\"type\":\"address\"},{\"internalType\":\"contract INSDomainPrice\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract INSReverseRegistrar\",\"name\":\"reverseRegistrar\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"registerProtectedName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"renew\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"rentPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"name\":\"setCommitmentAge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"setMinRegistrationDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INSDomainPrice\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"valid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A registrar controller for registering and renewing names at fixed cost.\",\"errors\":{\"CommitmentTooNew(bytes32)\":[{\"details\":\"Error: The provided commitment timestamp is too new for registration.\"}],\"CommitmentTooOld(bytes32)\":[{\"details\":\"Error: The provided commitment timestamp is too old for registration.\"}],\"DurationTooShort(uint64)\":[{\"details\":\"Error: The requested duration for registration is too short.\"}],\"ErrInvalidRegisterProtectedName(string,address,bool,bool)\":[{\"details\":\"Thrown when received invalid params for registering protected name\"}],\"ErrRequestedForProtectedName(string)\":[{\"details\":\"Thrown when some one requests for protected names\"}],\"InsufficientValue()\":[{\"details\":\"Error: Insufficient value (RON) provided for registration.\"}],\"InvalidArrayLength()\":[{\"details\":\"Thrown when received invalid array length\"}],\"MaxCommitmentAgeTooHigh()\":[{\"details\":\"Error: The maximum commitment age is set too high.\"}],\"MaxCommitmentAgeTooLow()\":[{\"details\":\"Error: The maximum commitment age is set too low.\"}],\"NameNotAvailable(string)\":[{\"details\":\"Error: The requested name is not available for registration.\"}],\"ResolverRequiredWhenDataSupplied()\":[{\"details\":\"Error: A resolver is required when additional data is supplied during registration.\"}],\"Unauthorized(bytes32)\":[{\"details\":\"Error: The sender is not authorized for the given RNS node.\"}],\"UnexpiredCommitmentExists(bytes32)\":[{\"details\":\"Error: An unexpired commitment already exists for the given commitment.\"}]},\"events\":{\"CommitmentAgeUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the commitment age range is updated.\",\"params\":{\"maxCommitmentAge\":\"The new maximum commitment age in seconds.\",\"minCommitmentAge\":\"The new minimum commitment age in seconds.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"DomainPriceUpdated(address,address)\":{\"details\":\"Emitted when RNSDomainPrice contract is updated.\",\"params\":{\"newDomainPrice\":\"The new duration domain price contract.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinRegistrationDurationUpdated(address,uint256)\":{\"details\":\"Emitted when the min registration duration is updated.\",\"params\":{\"duration\":\"The new duration in seconds.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"NameRegistered(string,uint256,address,uint256,uint256,uint64)\":{\"details\":\"Emitted when a new name is successfully registered.\",\"params\":{\"expires\":\"The expiration timestamp of the registration.\",\"id\":\"The namehash of the registered name.\",\"name\":\"The registered name.\",\"owner\":\"The owner of the registered name.\",\"ronPrice\":\"The cost of the registration in RON.\",\"usdPrice\":\"The cost of the registration in USD.\"}},\"NameRenewed(string,uint256,uint256,uint64)\":{\"details\":\"Emitted when a name is renewed.\",\"params\":{\"cost\":\"The cost of renewal.\",\"expires\":\"The new expiration timestamp after renewal.\",\"id\":\"The namehash of the registered name.\",\"name\":\"The renewed name.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"ProtectedNamesWhitelisted(address,uint256[],address[],bool)\":{\"details\":\"Emitted the whitelist status is updated for the owners of the protected names.\",\"params\":{\"operator\":\"The address of the operator who triggered the update.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"available(string)\":{\"details\":\"Checks if a name is available for registration.\",\"params\":{\"name\":\"The name to check availability for.\"},\"returns\":{\"_0\":\"A boolean indicating whether the name is available.\"}},\"bulkWhitelistProtectedNames(uint256[],address[],bool)\":{\"details\":\"Bulk (de)whitelist for buying protected names. Requirements: - The method caller is contract operator. Emits an event {ProtectedNamesWhitelisted}.\"},\"commit(bytes32)\":{\"details\":\"Commits to a registration using the commitment hash.\",\"params\":{\"commitment\":\"The commitment hash.\"}},\"computeCommitment(string,address,uint64,bytes32,address,bytes[],bool)\":{\"details\":\"Generates the commitment hash for a registration.\",\"params\":{\"data\":\"Additional data associated with the registration.\",\"duration\":\"The duration of the registration.\",\"name\":\"The name to be registered.\",\"owner\":\"The owner of the name.\",\"resolver\":\"The resolver contract address.\",\"reverseRecord\":\"Whether to use reverse record for additional data.\",\"secret\":\"The secret used for the commitment.\"},\"returns\":{\"_0\":\"The commitment hash.\"}},\"computeId(string)\":{\"details\":\"Calculate the corresponding id given RON_ID and name.\"},\"getCommitmentAgeRange()\":{\"details\":\"Returns the range of commitment ages allowed.\"},\"getMinRegistrationDuration()\":{\"details\":\"Returns the minimum registration duration.\"},\"getNameChecker()\":{\"details\":\"Returns the INameChecker contract associated with this controller.\"},\"getPriceOracle()\":{\"details\":\"Returns the INSDomainPrice contract associated with this controller.\"},\"getRNSUnified()\":{\"details\":\"Returns the INSUnified contract associated with this controller.\"},\"getReverseRegistrar()\":{\"details\":\"Returns the IReverseRegistrar contract associated with this controller.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getTreasury()\":{\"details\":\"Returns the treasury address.\"},\"getWhitelistProtectedNameStatus(uint256,address)\":{\"details\":\"Returns the whitelist status for registering protected name.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"pause()\":{\"details\":\"Pauses the registrar controller's functionality. Requirements: - The caller must have the admin role.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"register(string,address,uint64,bytes32,address,bytes[],bool)\":{\"details\":\"Registers a new name.\",\"params\":{\"data\":\"Additional data associated with the registration.\",\"duration\":\"The duration of the registration.\",\"name\":\"The name to be registered.\",\"owner\":\"The owner of the name.\",\"resolver\":\"The resolver contract address.\",\"reverseRecord\":\"Whether to use reverse record for additional data.\",\"secret\":\"The secret used for the commitment.\"}},\"registerProtectedName(string,address,uint64,address,bytes[],bool)\":{\"details\":\"Registers a protected name. Requirements: - The owner is whitelisted for registering.\"},\"renew(string,uint64)\":{\"details\":\"Renews an existing name registration.\",\"params\":{\"duration\":\"The duration of the renewal.\",\"name\":\"The name to be renewed.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"rentPrice(string,uint64)\":{\"details\":\"Retrieves the rent price for a given name and duration.\",\"params\":{\"duration\":\"The duration of the rent.\",\"name\":\"The name for which to calculate the rent price.\"},\"returns\":{\"ronPrice\":\"rent price in ron.\",\"usdPrice\":\"rent price in usd.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setCommitmentAge(uint256,uint256)\":{\"details\":\"Sets the minimum and maximum commitment ages. Requirements: - Caller must have the DEFAULT_ADMIN_ROLE. - The `maxCommitmentAge` must be less than or equal to the current block timestamp. - The `maxCommitmentAge` must be greater than the `minCommitmentAge`. Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\",\"params\":{\"maxCommitmentAge\":\"The maximum commitment age in seconds.\",\"minCommitmentAge\":\"The minimum commitment age in seconds.\"}},\"setMinRegistrationDuration(uint256)\":{\"details\":\"Updates min registration duration. Requirements: - The caller must have the admin role.\"},\"setPriceOracle(address)\":{\"details\":\"Updates price oracle address. Requirements: - The caller must have the admin role.\"},\"setTreasury(address)\":{\"details\":\"Updates treasury address. Requirements: - The caller must have the admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unpause()\":{\"details\":\"Unpauses the registrar controller's functionality. Requirements: - The caller must have the admin role.\"},\"valid(string)\":{\"details\":\"Checks if a name is valid.\",\"params\":{\"name\":\"The name to check validity for.\"},\"returns\":{\"_0\":\"A boolean indicating whether the name is available.\"}}},\"stateVariables\":{\"MIN_DOMAIN_LENGTH\":{\"details\":\"The minimum domain name's length\"},\"OPERATOR_ROLE\":{\"details\":\"Returns the operator role.\"},\"PAUSER_ROLE\":{\"details\":\"Returns the role identifier for the pauser role.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_committedAt\":{\"details\":\"Mapping from commitment hash => timestamp that commitment made.\"},\"_maxCommitmentAge\":{\"details\":\"Maximum duration between commitment and registration in second(s).\"},\"_minCommitmentAge\":{\"details\":\"Minimum duration between commitment and registration in second(s).\"},\"_minRegistrationDuration\":{\"details\":\"Min registration duration\"},\"_nameChecker\":{\"details\":\"The namechecker contract.\"},\"_priceOracle\":{\"details\":\"The price oracle.\"},\"_protectedNamesWhitelisted\":{\"details\":\"Mapping id => owner => flag indicating whether the owner is whitelisted to buy protected name\"},\"_reverseRegistrar\":{\"details\":\"The reverse registrar contract.\"},\"_rnsUnified\":{\"details\":\"The rns unified contract.\"},\"_treasury\":{\"details\":\"The treasury address.\"}},\"title\":\"RONRegistrarController\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Customized version of ETHRegistrarController: https://github.com/ensdomains/ens-contracts/blob/45455f1229556ed4f416ef7225d4caea2c1bc0b5/contracts/ethregistrar/ETHRegistrarController.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RONRegistrarController.sol\":\"RONRegistrarController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/security/Pausable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract Pausable is Context {\\n /**\\n * @dev Emitted when the pause is triggered by `account`.\\n */\\n event Paused(address account);\\n\\n /**\\n * @dev Emitted when the pause is lifted by `account`.\\n */\\n event Unpaused(address account);\\n\\n bool private _paused;\\n\\n /**\\n * @dev Initializes the contract in unpaused state.\\n */\\n constructor() {\\n _paused = false;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is not paused.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n modifier whenNotPaused() {\\n _requireNotPaused();\\n _;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is paused.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n modifier whenPaused() {\\n _requirePaused();\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the contract is paused, and false otherwise.\\n */\\n function paused() public view virtual returns (bool) {\\n return _paused;\\n }\\n\\n /**\\n * @dev Throws if the contract is paused.\\n */\\n function _requireNotPaused() internal view virtual {\\n require(!paused(), \\\"Pausable: paused\\\");\\n }\\n\\n /**\\n * @dev Throws if the contract is not paused.\\n */\\n function _requirePaused() internal view virtual {\\n require(paused(), \\\"Pausable: not paused\\\");\\n }\\n\\n /**\\n * @dev Triggers stopped state.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n function _pause() internal virtual whenNotPaused {\\n _paused = true;\\n emit Paused(_msgSender());\\n }\\n\\n /**\\n * @dev Returns to normal state.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n function _unpause() internal virtual whenPaused {\\n _paused = false;\\n emit Unpaused(_msgSender());\\n }\\n}\\n\",\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n // Booleans are more expensive than uint256 or any type that takes up a full\\n // word because each write operation emits an extra SLOAD to first read the\\n // slot's contents, replace the bits taken up by the boolean, and then write\\n // back. This is the compiler's defense against contract upgrades and\\n // pointer aliasing, and it cannot be disabled.\\n\\n // The values being non-zero value makes deployment a bit more expensive,\\n // but in exchange the refund on every call to nonReentrant will be lower in\\n // amount. Since refunds are capped to a percentage of the total\\n // transaction's gas, it is best to keep them low in cases like this one, to\\n // increase the likelihood of the full refund coming into effect.\\n uint256 private constant _NOT_ENTERED = 1;\\n uint256 private constant _ENTERED = 2;\\n\\n uint256 private _status;\\n\\n constructor() {\\n _status = _NOT_ENTERED;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and making it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n // Any calls to nonReentrant after this point will fail\\n _status = _ENTERED;\\n }\\n\\n function _nonReentrantAfter() private {\\n // By storing the original value once again, a refund is triggered (see\\n // https://eips.ethereum.org/EIPS/eip-2200)\\n _status = _NOT_ENTERED;\\n }\\n\\n /**\\n * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n * `nonReentrant` function in the call stack.\\n */\\n function _reentrancyGuardEntered() internal view returns (bool) {\\n return _status == _ENTERED;\\n }\\n}\\n\",\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RONRegistrarController.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Pausable } from \\\"@openzeppelin/contracts/security/Pausable.sol\\\";\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { ReentrancyGuard } from \\\"@openzeppelin/contracts/security/ReentrancyGuard.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { IPublicResolver } from \\\"./interfaces/resolvers/IPublicResolver.sol\\\";\\nimport {\\n INSUnified,\\n INameChecker,\\n INSDomainPrice,\\n INSReverseRegistrar,\\n IRONRegistrarController\\n} from \\\"./interfaces/IRONRegistrarController.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { RONTransferHelper } from \\\"./libraries/transfers/RONTransferHelper.sol\\\";\\n\\n/**\\n * @title RONRegistrarController\\n * @notice Customized version of ETHRegistrarController: https://github.com/ensdomains/ens-contracts/blob/45455f1229556ed4f416ef7225d4caea2c1bc0b5/contracts/ethregistrar/ETHRegistrarController.sol\\n * @dev A registrar controller for registering and renewing names at fixed cost.\\n */\\ncontract RONRegistrarController is\\n Pausable,\\n Initializable,\\n ReentrancyGuard,\\n AccessControlEnumerable,\\n IRONRegistrarController\\n{\\n using LibString for string;\\n using LibRNSDomain for string;\\n\\n /// @dev The minimum domain name's length\\n uint8 public constant MIN_DOMAIN_LENGTH = 3;\\n /// @inheritdoc IRONRegistrarController\\n bytes32 public constant PAUSER_ROLE = keccak256(\\\"PAUSER_ROLE\\\");\\n /// @inheritdoc IRONRegistrarController\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Minimum duration between commitment and registration in second(s).\\n uint256 internal _minCommitmentAge;\\n /// @dev Maximum duration between commitment and registration in second(s).\\n uint256 internal _maxCommitmentAge;\\n /// @dev Min registration duration\\n uint256 internal _minRegistrationDuration;\\n\\n /// @dev The treasury address.\\n address payable internal _treasury;\\n /// @dev The rns unified contract.\\n INSUnified internal _rnsUnified;\\n /// @dev The namechecker contract.\\n INameChecker internal _nameChecker;\\n /// @dev The price oracle.\\n INSDomainPrice internal _priceOracle;\\n /// @dev The reverse registrar contract.\\n INSReverseRegistrar internal _reverseRegistrar;\\n\\n /// @dev Mapping from commitment hash => timestamp that commitment made.\\n mapping(bytes32 commitment => uint256 timestamp) internal _committedAt;\\n /// @dev Mapping id => owner => flag indicating whether the owner is whitelisted to buy protected name\\n mapping(uint256 id => mapping(address owner => bool)) internal _protectedNamesWhitelisted;\\n\\n modifier onlyAvailable(string memory name) {\\n _requireAvailable(name);\\n _;\\n }\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address pauser,\\n address payable treasury,\\n uint256 maxCommitmentAge,\\n uint256 minCommitmentAge,\\n uint256 minRegistrationDuration,\\n INSUnified rnsUnified,\\n INameChecker nameChecker,\\n INSDomainPrice priceOracle,\\n INSReverseRegistrar reverseRegistrar\\n ) external initializer {\\n _setupRole(PAUSER_ROLE, pauser);\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n\\n _setPriceOracle(priceOracle);\\n _setMinRegistrationDuration(minRegistrationDuration);\\n _setCommitmentAge(minCommitmentAge, maxCommitmentAge);\\n\\n _treasury = treasury;\\n _rnsUnified = rnsUnified;\\n _nameChecker = nameChecker;\\n _reverseRegistrar = reverseRegistrar;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function pause() external onlyRole(PAUSER_ROLE) {\\n _pause();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function unpause() external onlyRole(PAUSER_ROLE) {\\n _unpause();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getMinRegistrationDuration() public view returns (uint256) {\\n return _minRegistrationDuration;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function rentPrice(string memory name, uint64 duration) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n (INSDomainPrice.UnitPrice memory basePrice, INSDomainPrice.UnitPrice memory tax) =\\n _priceOracle.getRenewalFee(name, duration);\\n usdPrice = basePrice.usd + tax.usd;\\n ronPrice = basePrice.ron + tax.ron;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function valid(string memory name) public view returns (bool) {\\n return name.strlen() >= MIN_DOMAIN_LENGTH && !_nameChecker.forbidden(name);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function available(string memory name) public view returns (bool) {\\n return valid(name) && _rnsUnified.available(computeId(name));\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function computeCommitment(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) public view onlyAvailable(name) returns (bytes32) {\\n if (data.length != 0 && resolver == address(0)) revert ResolverRequiredWhenDataSupplied();\\n return keccak256(abi.encode(computeId(name), owner, duration, secret, resolver, data, reverseRecord));\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function computeId(string memory name) public pure returns (uint256 id) {\\n return LibRNSDomain.toId(LibRNSDomain.RON_ID, name);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function commit(bytes32 commitment) external whenNotPaused {\\n if (_committedAt[commitment] + _maxCommitmentAge >= block.timestamp) revert UnexpiredCommitmentExists(commitment);\\n _committedAt[commitment] = block.timestamp;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setMinRegistrationDuration(uint256 duration) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setMinRegistrationDuration(duration);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function register(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable whenNotPaused nonReentrant {\\n uint256 id = computeId(name);\\n if (_rnsUnified.getRecord(id).mut.protected) revert ErrRequestedForProtectedName(name);\\n\\n bytes32 commitHash = computeCommitment({\\n name: name,\\n owner: owner,\\n duration: duration,\\n secret: secret,\\n resolver: resolver,\\n data: data,\\n reverseRecord: reverseRecord\\n });\\n _validateCommitment(duration, commitHash);\\n\\n (uint256 usdPrice, uint256 ronPrice) = _handlePrice(name, duration);\\n _register(name, owner, duration, resolver, data, reverseRecord, usdPrice, ronPrice);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function renew(string calldata name, uint64 duration) external payable whenNotPaused nonReentrant {\\n (, uint256 ronPrice) = rentPrice(name, duration);\\n if (msg.value < ronPrice) revert InsufficientValue();\\n uint256 remainAmount = msg.value - ronPrice;\\n\\n uint256 id = computeId(name);\\n uint64 expiryTime = _rnsUnified.renew(id, duration);\\n emit NameRenewed(name, id, ronPrice, expiryTime);\\n\\n if (remainAmount != 0) RONTransferHelper.safeTransfer(payable(_msgSender()), remainAmount);\\n _transferRONToTreasury();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function registerProtectedName(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable whenNotPaused nonReentrant onlyAvailable(name) {\\n if (!available(name)) revert NameNotAvailable(name);\\n uint256 id = computeId(name);\\n bool protected = _rnsUnified.getRecord(id).mut.protected;\\n bool whitelisted = _protectedNamesWhitelisted[id][owner];\\n if (!protected || !whitelisted) revert ErrInvalidRegisterProtectedName(name, owner, protected, whitelisted);\\n\\n (uint256 usdPrice, uint256 ronPrice) = _handlePrice(name, duration);\\n _register(name, owner, duration, resolver, data, reverseRecord, usdPrice, ronPrice);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function bulkWhitelistProtectedNames(uint256[] calldata ids, address[] calldata owners, bool status)\\n external\\n onlyRole(OPERATOR_ROLE)\\n {\\n uint256 length = ids.length;\\n if (length == 0 || length != owners.length) revert InvalidArrayLength();\\n\\n for (uint256 i; i < length;) {\\n _protectedNamesWhitelisted[ids[i]][owners[i]] = status;\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n emit ProtectedNamesWhitelisted(_msgSender(), ids, owners, status);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getWhitelistProtectedNameStatus(uint256 id, address owner) external view returns (bool status) {\\n return _protectedNamesWhitelisted[id][owner];\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setTreasury(address payable addr) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _treasury = addr;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setCommitmentAge(minCommitmentAge, maxCommitmentAge);\\n }\\n\\n /**\\n * @dev Internal function to update the commitment age range.\\n * Requirements:\\n * - The `maxCommitmentAge` must be less than or equal to the current block timestamp.\\n * - The `maxCommitmentAge` must be greater than the `minCommitmentAge`.\\n * Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\\n * @param minCommitmentAge The minimum commitment age in seconds.\\n * @param maxCommitmentAge The maximum commitment age in seconds.\\n */\\n function _setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) internal {\\n if (maxCommitmentAge > block.timestamp) revert MaxCommitmentAgeTooHigh();\\n if (maxCommitmentAge <= minCommitmentAge) revert MaxCommitmentAgeTooLow();\\n\\n _minCommitmentAge = minCommitmentAge;\\n _maxCommitmentAge = maxCommitmentAge;\\n\\n emit CommitmentAgeUpdated(_msgSender(), minCommitmentAge, maxCommitmentAge);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setPriceOracle(INSDomainPrice priceOracle) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setPriceOracle(priceOracle);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getTreasury() external view returns (address) {\\n return _treasury;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getCommitmentAgeRange() external view returns (uint256 minCommitmentAge, uint256 maxCommitmentAge) {\\n return (_minCommitmentAge, _maxCommitmentAge);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getRNSUnified() external view returns (INSUnified) {\\n return _rnsUnified;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getPriceOracle() external view returns (INSDomainPrice) {\\n return _priceOracle;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getNameChecker() external view returns (INameChecker) {\\n return _nameChecker;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar) {\\n return _reverseRegistrar;\\n }\\n\\n /**\\n * @dev Validates commitment.\\n *\\n * Requirements:\\n * - The duration must larger than or equal to minimum registration duration.\\n * - The passed duration must in a valid range.\\n */\\n function _validateCommitment(uint64 duration, bytes32 commitment) internal {\\n if (duration < _minRegistrationDuration) revert DurationTooShort(duration);\\n\\n uint256 passedDuration = block.timestamp - _committedAt[commitment];\\n if (passedDuration < _minCommitmentAge) revert CommitmentTooNew(commitment);\\n if (_maxCommitmentAge < passedDuration) revert CommitmentTooOld(commitment);\\n\\n delete _committedAt[commitment];\\n }\\n\\n /**\\n * @dev Sets minimum registration duration.\\n * Emits a {MinRegistrationDurationUpdated} event indicating the successful update of the registration duration.\\n */\\n function _setMinRegistrationDuration(uint256 duration) internal {\\n _minRegistrationDuration = duration;\\n emit MinRegistrationDurationUpdated(_msgSender(), duration);\\n }\\n\\n /**\\n * @dev Sets data into resolver address contract.\\n */\\n function _setRecords(address resolverAddress, uint256 id, bytes[] calldata data) internal {\\n IPublicResolver(resolverAddress).multicallWithNodeCheck(bytes32(id), data);\\n }\\n\\n /**\\n * @dev Sets data into reverse registrar.\\n */\\n function _setReverseRecord(string memory name, address owner) internal {\\n _reverseRegistrar.setNameForAddr(owner, string.concat(name, \\\".ron\\\"));\\n }\\n\\n /**\\n * @dev Helper method to take fee into treasury address.\\n */\\n function _transferRONToTreasury() internal {\\n RONTransferHelper.safeTransfer(_treasury, address(this).balance);\\n }\\n\\n /**\\n * @dev Helper method to take renewal fee of a name.\\n */\\n function _handlePrice(string memory name, uint64 duration) internal returns (uint256 usdPrice, uint256 ronPrice) {\\n (usdPrice, ronPrice) = rentPrice(name, duration);\\n if (msg.value < ronPrice) revert InsufficientValue();\\n\\n unchecked {\\n uint256 remainAmount = msg.value - ronPrice;\\n if (remainAmount != 0) RONTransferHelper.safeTransfer(payable(_msgSender()), remainAmount);\\n }\\n\\n _transferRONToTreasury();\\n }\\n\\n /**\\n * @dev Helper method to register a name for owner.\\n *\\n * Emits an event {NameRegistered}.\\n */\\n function _register(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord,\\n uint256 usdPrice,\\n uint256 ronPrice\\n ) internal {\\n (uint64 expiryTime, uint256 id) = _rnsUnified.mint(LibRNSDomain.RON_ID, name, resolver, owner, duration);\\n if (data.length != 0) _setRecords(resolver, id, data);\\n if (reverseRecord) _setReverseRecord(name, owner);\\n emit NameRegistered(name, id, owner, ronPrice, usdPrice, expiryTime);\\n }\\n\\n /**\\n * @dev Helper method to update RNSDomainPrice contract.\\n *\\n * Emits an event {DomainPriceUpdated}.\\n */\\n function _setPriceOracle(INSDomainPrice priceOracle) internal {\\n _priceOracle = priceOracle;\\n emit DomainPriceUpdated(_msgSender(), priceOracle);\\n }\\n\\n /**\\n * @dev Helper method to check if a domain name is available for register.\\n */\\n function _requireAvailable(string memory name) internal view {\\n if (!available(name)) revert NameNotAvailable(name);\\n }\\n}\\n\",\"keccak256\":\"0x5394d6c84b2adc85a27a6ee4e0cdfe0b3b09ba3293c363a5e520414d72a543c5\",\"license\":\"MIT\"},\"src/interfaces/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice To multi-call to a specified contract which has multicall interface:\\n *\\n * ```solidity\\n * interface IMock is IMulticallable {\\n * function foo() external;\\n * function bar() external;\\n * }\\n *\\n * bytes[] memory calldatas = new bytes[](2);\\n * calldatas[0] = abi.encodeCall(IMock.foo,());\\n * calldatas[1] = abi.encodeCall(IMock.bar,());\\n * IMock(target).multicall(calldatas);\\n * ```\\n */\\ninterface IMulticallable {\\n /**\\n * @dev Executes bulk action to the original contract.\\n * Reverts if there is a single call failed.\\n *\\n * @param data The calldata to original contract.\\n *\\n */\\n function multicall(bytes[] calldata data) external returns (bytes[] memory results);\\n\\n /**\\n * @dev Executes bulk action to the original contract.\\n *\\n * @param requireSuccess Flag to indicating whether the contract reverts if there is a single call failed.\\n * @param data The calldata to original contract.\\n *\\n */\\n function tryMulticall(bool requireSuccess, bytes[] calldata data) external returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x0e76578b0efeafdf33915d77d3f98145ac2f74cdd311db03a9b94d4aa566d107\",\"license\":\"UNLICENSED\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0xcb57a6120bbe131d1c2a2ae72ce6a33ab95f5da4cae85e9cd1731496e26db7b1\",\"license\":\"MIT\"},\"src/interfaces/INSReverseRegistrar.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport { INameResolver } from \\\"./resolvers/INameResolver.sol\\\";\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\n\\n/// @dev See https://eips.ethereum.org/EIPS/eip-181#registrar\\ninterface IERC181 {\\n /**\\n * @dev Claims the name hex(addr) + '.addr.reverse' for addr.\\n *\\n * @param addr The address to set as the addr of the reverse record in INS.\\n * @return id The INS node hash of the reverse record.\\n */\\n function claim(address addr) external returns (uint256 id);\\n\\n /**\\n * @dev Claims the name hex(owner) + '.addr.reverse' for owner and sets resolver.\\n *\\n * @param addr The address to set as the owner of the reverse record in INS.\\n * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n * @return id The INS node hash of the reverse record.\\n */\\n function claimWithResolver(address addr, address resolver) external returns (uint256 id);\\n\\n /**\\n * @dev Sets the name record for the reverse INS record associated with the calling account. First updates the\\n * resolver to the default reverse resolver if necessary.\\n *\\n * @param name The name to set for this address.\\n * @return The INS node hash of the reverse record.\\n */\\n function setName(string memory name) external returns (uint256);\\n}\\n\\ninterface INSReverseRegistrar is IERC181, IERC165 {\\n /// @dev Error: The provided id is not child node of `ADDR_REVERSE_ID`\\n error InvalidId();\\n /// @dev Error: The contract is not authorized for minting or modifying domain hex(addr) + '.addr.reverse'.\\n error InvalidConfig();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: The provided resolver address is null.\\n error NullAssignment();\\n\\n /// @dev Emitted when reverse node is claimed.\\n event ReverseClaimed(address indexed addr, uint256 indexed id);\\n /// @dev Emitted when the default resolver is changed.\\n event DefaultResolverChanged(INameResolver indexed resolver);\\n\\n /**\\n * @dev Returns the controller role.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns default resolver.\\n */\\n function getDefaultResolver() external view returns (INameResolver);\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Sets default resolver.\\n *\\n * Requirement:\\n *\\n * - The method caller must be admin.\\n *\\n * Emitted an event {DefaultResolverChanged}.\\n *\\n */\\n function setDefaultResolver(INameResolver resolver) external;\\n\\n /**\\n * @dev Same as {IERC181-setName}.\\n */\\n function setNameForAddr(address addr, string memory name) external returns (uint256 id);\\n\\n /**\\n * @dev Returns address that the reverse node resolves for.\\n * Eg. node namehash('{addr}.addr.reverse') will always resolve for `addr`.\\n */\\n function getAddress(uint256 id) external view returns (address);\\n\\n /**\\n * @dev Returns the id hash for a given account's reverse records.\\n * @param addr The address to hash\\n * @return The INS node hash.\\n */\\n function computeId(address addr) external pure returns (uint256);\\n}\\n\",\"keccak256\":\"0x3b88e9ea1dd7c128244b5d0c69cee9dcadcb16b05a7e13416cc7b95c071b60a4\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/interfaces/INameChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title INameChecker\\n * @dev The INameChecker interface provides functions for managing and checking substrings and forbidden words in strings.\\n */\\ninterface INameChecker {\\n /**\\n * @dev Emitted when the word range is updated.\\n * @param operator The address that updated the word range.\\n * @param min The minimum word length allowed.\\n * @param max The maximum word length allowed.\\n */\\n event WordRangeUpdated(address indexed operator, uint8 min, uint8 max);\\n\\n /**\\n * @dev Emitted when the forbidden words are updated.\\n * @param operator The address that updated the forbidden words list.\\n * @param wordCount The number of words in the list.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n event ForbiddenWordsUpdated(address indexed operator, uint256 wordCount, bool shouldForbid);\\n\\n /**\\n * @dev Returns an array of all substrings of a given string.\\n * @param str The input string to analyze.\\n * @return subStrings An array of all substrings.\\n */\\n function getAllSubStrings(string calldata str) external view returns (string[] memory subStrings);\\n\\n /**\\n * @dev Returns the total number of substrings for a given string length, as well as the minimum and maximum allowed word lengths.\\n * @param strlen The length of the input string.\\n * @return total The total number of substrings.\\n * @return min The minimum word length allowed.\\n * @return max The maximum word length allowed.\\n */\\n function totalSubString(uint256 strlen) external view returns (uint256 total, uint256 min, uint256 max);\\n\\n /**\\n * @dev Sets a list of forbidden words and specifies whether they should be forbidden.\\n * @param packedWords An array of packed word representations.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n function setForbiddenWords(uint256[] calldata packedWords, bool shouldForbid) external;\\n\\n /**\\n * @dev Sets a list of forbidden words and specifies whether they should be forbidden.\\n * @param words An array of raw words in string representations.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n function setForbiddenWords(string[] calldata words, bool shouldForbid) external;\\n\\n /**\\n * @dev Sets the minimum and maximum word lengths allowed.\\n * @param min The minimum word length.\\n * @param max The maximum word length.\\n */\\n function setWordRange(uint8 min, uint8 max) external;\\n\\n /**\\n * @dev Retrieves the current minimum and maximum word lengths allowed.\\n * @return min The minimum word length allowed.\\n * @return max The maximum word length allowed.\\n */\\n function getWordRange() external view returns (uint8 min, uint8 max);\\n\\n /**\\n * @notice Checks if a given name contains any forbidden characters or blacklisted words.\\n * @param name The string to check.\\n * @return true if the name contains forbidden characters or blacklisted words, false otherwise.\\n */\\n function forbidden(string calldata name) external view returns (bool);\\n\\n /**\\n * @notice Checks if a given name contains any blacklisted words.\\n * @param name The string to check.\\n * @return true if the name contains blacklisted words, false otherwise.\\n */\\n function containsBlacklistedWord(string calldata name) external view returns (bool);\\n\\n /**\\n * @notice Checks if a given name contains any invalid characters.\\n * requirements:\\n * - all characters in name must in range [a-z] or [0-9].\\n * @param name The string to check.\\n * @return true if the name contains invalid characters, false otherwise.\\n */\\n function containsInvalidCharacter(string calldata name) external pure returns (bool);\\n\\n /**\\n * @dev Packs a string into a single word representation.\\n * @param str The string to be packed.\\n * @notice Returns `uint256(0)` if the length is zero or greater than 31.\\n * @return packed The packed value of the input string.\\n */\\n function pack(string memory str) external pure returns (uint256 packed);\\n\\n /**\\n * @dev Packs an array of strings into their single word representations.\\n * @param strs The array of strings to be packed.\\n * @notice Returns an array of packed values, along with the minimum and maximum string lengths.\\n * @return packeds An array containing the packed values of the input strings.\\n */\\n function packBulk(string[] memory strs) external pure returns (uint256[] memory packeds);\\n}\\n\",\"keccak256\":\"0x9f2b9f08f8d60f565f93925ad64353f01feaad671440d865f45008d1304d4794\",\"license\":\"MIT\"},\"src/interfaces/IRONRegistrarController.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { INSDomainPrice } from \\\"./INSDomainPrice.sol\\\";\\nimport { INameChecker } from \\\"./INameChecker.sol\\\";\\nimport { INSReverseRegistrar } from \\\"./INSReverseRegistrar.sol\\\";\\n\\n/**\\n * @title IRONRegistrarController\\n * @dev Interface for the Registrar Controller contract that manages the registration, renewal, and commitment of RNS\\n * names.\\n */\\ninterface IRONRegistrarController {\\n /// @dev Error: The provided commitment timestamp is too new for registration.\\n error CommitmentTooNew(bytes32 commitment);\\n /// @dev Error: The provided commitment timestamp is too old for registration.\\n error CommitmentTooOld(bytes32 commitment);\\n /// @dev Error: The requested name is not available for registration.\\n error NameNotAvailable(string name);\\n /// @dev Error: The requested duration for registration is too short.\\n error DurationTooShort(uint64 duration);\\n /// @dev Error: A resolver is required when additional data is supplied during registration.\\n error ResolverRequiredWhenDataSupplied();\\n /// @dev Error: An unexpired commitment already exists for the given commitment.\\n error UnexpiredCommitmentExists(bytes32 commitment);\\n /// @dev Error: Insufficient value (RON) provided for registration.\\n error InsufficientValue();\\n /// @dev Error: The sender is not authorized for the given RNS node.\\n error Unauthorized(bytes32 node);\\n /// @dev Error: The maximum commitment age is set too low.\\n error MaxCommitmentAgeTooLow();\\n /// @dev Error: The maximum commitment age is set too high.\\n error MaxCommitmentAgeTooHigh();\\n /// @dev Thrown when some one requests for protected names\\n error ErrRequestedForProtectedName(string name);\\n /// @dev Thrown when received invalid params for registering protected name\\n error ErrInvalidRegisterProtectedName(string name, address requestOwner, bool nameProtected, bool ownerWhitelisted);\\n /// @dev Thrown when received invalid array length\\n error InvalidArrayLength();\\n\\n /**\\n * @dev Emitted when the min registration duration is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param duration The new duration in seconds.\\n */\\n event MinRegistrationDurationUpdated(address indexed operator, uint256 duration);\\n\\n /**\\n * @dev Emitted when RNSDomainPrice contract is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param newDomainPrice The new duration domain price contract.\\n */\\n event DomainPriceUpdated(address indexed operator, INSDomainPrice newDomainPrice);\\n\\n /**\\n * @dev Emitted when the commitment age range is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param minCommitmentAge The new minimum commitment age in seconds.\\n * @param maxCommitmentAge The new maximum commitment age in seconds.\\n */\\n event CommitmentAgeUpdated(address indexed operator, uint256 minCommitmentAge, uint256 maxCommitmentAge);\\n\\n /**\\n * @dev Emitted when a new name is successfully registered.\\n * @param name The registered name.\\n * @param id The namehash of the registered name.\\n * @param owner The owner of the registered name.\\n * @param ronPrice The cost of the registration in RON.\\n * @param usdPrice The cost of the registration in USD.\\n * @param expires The expiration timestamp of the registration.\\n */\\n event NameRegistered(\\n string name, uint256 indexed id, address indexed owner, uint256 ronPrice, uint256 usdPrice, uint64 expires\\n );\\n\\n /**\\n * @dev Emitted when a name is renewed.\\n * @param name The renewed name.\\n * @param id The namehash of the registered name.\\n * @param cost The cost of renewal.\\n * @param expires The new expiration timestamp after renewal.\\n */\\n event NameRenewed(string name, uint256 indexed id, uint256 cost, uint64 expires);\\n\\n /**\\n * @dev Emitted the whitelist status is updated for the owners of the protected names.\\n * @param operator The address of the operator who triggered the update.\\n */\\n event ProtectedNamesWhitelisted(address indexed operator, uint256[] ids, address[] owners, bool status);\\n\\n /**\\n * @dev Retrieves the rent price for a given name and duration.\\n * @param name The name for which to calculate the rent price.\\n * @param duration The duration of the rent.\\n * @return usdPrice rent price in usd.\\n * @return ronPrice rent price in ron.\\n */\\n function rentPrice(string memory name, uint64 duration) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Calculate the corresponding id given RON_ID and name.\\n */\\n function computeId(string memory name) external pure returns (uint256 id);\\n\\n /**\\n * @dev Checks if a name is valid.\\n * @param name The name to check validity for.\\n * @return A boolean indicating whether the name is available.\\n */\\n function valid(string memory name) external view returns (bool);\\n\\n /**\\n * @dev Checks if a name is available for registration.\\n * @param name The name to check availability for.\\n * @return A boolean indicating whether the name is available.\\n */\\n function available(string memory name) external returns (bool);\\n\\n /**\\n * @dev Generates the commitment hash for a registration.\\n * @param name The name to be registered.\\n * @param owner The owner of the name.\\n * @param duration The duration of the registration.\\n * @param secret The secret used for the commitment.\\n * @param resolver The resolver contract address.\\n * @param data Additional data associated with the registration.\\n * @param reverseRecord Whether to use reverse record for additional data.\\n * @return The commitment hash.\\n */\\n function computeCommitment(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external view returns (bytes32);\\n\\n /**\\n * @dev Commits to a registration using the commitment hash.\\n * @param commitment The commitment hash.\\n */\\n function commit(bytes32 commitment) external;\\n\\n /**\\n * @dev Registers a new name.\\n * @param name The name to be registered.\\n * @param owner The owner of the name.\\n * @param duration The duration of the registration.\\n * @param secret The secret used for the commitment.\\n * @param resolver The resolver contract address.\\n * @param data Additional data associated with the registration.\\n * @param reverseRecord Whether to use reverse record for additional data.\\n */\\n function register(\\n string calldata name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable;\\n\\n /**\\n * @dev Renews an existing name registration.\\n * @param name The name to be renewed.\\n * @param duration The duration of the renewal.\\n */\\n function renew(string calldata name, uint64 duration) external payable;\\n\\n /**\\n * @dev Registers a protected name.\\n *\\n * Requirements:\\n * - The owner is whitelisted for registering.\\n */\\n function registerProtectedName(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable;\\n\\n /**\\n * @dev Updates min registration duration.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function setMinRegistrationDuration(uint256 duration) external;\\n\\n /**\\n * @dev Sets the minimum and maximum commitment ages.\\n *\\n * Requirements:\\n * - Caller must have the DEFAULT_ADMIN_ROLE.\\n * - The `maxCommitmentAge` must be less than or equal to the current block timestamp.\\n * - The `maxCommitmentAge` must be greater than the `minCommitmentAge`.\\n *\\n * Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\\n *\\n * @param minCommitmentAge The minimum commitment age in seconds.\\n * @param maxCommitmentAge The maximum commitment age in seconds.\\n */\\n function setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) external;\\n\\n /**\\n * @dev Bulk (de)whitelist for buying protected names.\\n *\\n * Requirements:\\n * - The method caller is contract operator.\\n *\\n * Emits an event {ProtectedNamesWhitelisted}.\\n */\\n function bulkWhitelistProtectedNames(uint256[] calldata ids, address[] calldata owners, bool status) external;\\n\\n /**\\n * @dev Returns the whitelist status for registering protected name.\\n */\\n function getWhitelistProtectedNameStatus(uint256 id, address owner) external view returns (bool status);\\n\\n /**\\n * @dev Updates treasury address.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Updates price oracle address.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n */\\n function setPriceOracle(INSDomainPrice) external;\\n\\n /**\\n * @dev Returns the treasury address.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Pauses the registrar controller's functionality.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function pause() external;\\n\\n /**\\n * @dev Unpauses the registrar controller's functionality.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function unpause() external;\\n\\n /**\\n * @dev Returns the role identifier for the pauser role.\\n */\\n function PAUSER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the threshold for valid name length.\\n */\\n function MIN_DOMAIN_LENGTH() external view returns (uint8);\\n\\n /**\\n * @dev Returns the minimum registration duration.\\n */\\n function getMinRegistrationDuration() external view returns (uint256);\\n\\n /**\\n * @dev Returns the range of commitment ages allowed.\\n */\\n function getCommitmentAgeRange() external view returns (uint256 minCommitmentAge, uint256 maxCommitmentAge);\\n\\n /**\\n * @dev Returns the INSUnified contract associated with this controller.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Returns the INSDomainPrice contract associated with this controller.\\n */\\n function getPriceOracle() external view returns (INSDomainPrice);\\n\\n /**\\n * @dev Returns the INameChecker contract associated with this controller.\\n */\\n function getNameChecker() external view returns (INameChecker);\\n\\n /**\\n * @dev Returns the IReverseRegistrar contract associated with this controller.\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar);\\n}\\n\",\"keccak256\":\"0x553ded8a480060073e6274dadb390c441d4caa968df64d2f65b2401ffd422b00\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.0;\\n\\ninterface IABIResolver {\\n /// Thrown when the input content type is invalid.\\n error InvalidContentType();\\n\\n /// @dev Emitted when the ABI is changed.\\n event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n /**\\n * @dev Sets the ABI associated with an INS node. Nodes may have one ABI of each content type. To remove an ABI, set it\\n * to the empty string.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n * - The content type must be powers of 2.\\n *\\n * Emitted an event {ABIChanged}.\\n *\\n * @param node The node to update.\\n * @param contentType The content type of the ABI\\n * @param data The ABI data.\\n */\\n function setABI(bytes32 node, uint256 contentType, bytes calldata data) external;\\n\\n /**\\n * @dev Returns the ABI associated with an INS node.\\n * Defined in EIP-205, see more at https://eips.ethereum.org/EIPS/eip-205\\n *\\n * @param node The INS node to query\\n * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n * @return contentType The content type of the return value\\n * @return data The ABI data\\n */\\n function ABI(bytes32 node, uint256 contentTypes) external view returns (uint256 contentType, bytes memory data);\\n}\\n\",\"keccak256\":\"0xc701a6cafa883d6607b5916dfb4277099f39c450930d776da36a7acc2b2498c0\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.0;\\n\\ninterface IAddressResolver {\\n /// @dev Emitted when an address of a node is changed.\\n event AddrChanged(bytes32 indexed node, address addr);\\n\\n /**\\n * @dev Sets the address associated with an INS node.\\n *\\n * Requirement:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {AddrChanged}.\\n *\\n * @param node The node to update.\\n * @param addr The address to set.\\n */\\n function setAddr(bytes32 node, address addr) external;\\n\\n /**\\n * @dev Returns the address associated with an INS node.\\n * @param node The INS node to query.\\n * @return The associated address.\\n */\\n function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0xb914cb4a730d20c867805fd148e7574c6565bc6c0a129825cdf3cf4f2f7f72d0\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface IContentHashResolver {\\n /// @dev Emitted when the content hash of a node is changed.\\n event ContentHashChanged(bytes32 indexed node, bytes hash);\\n\\n /**\\n * @dev Sets the content hash associated with an INS node.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {ContentHashChanged}.\\n *\\n * @param node The node to update.\\n * @param hash The content hash to set\\n */\\n function setContentHash(bytes32 node, bytes calldata hash) external;\\n\\n /**\\n * @dev Returns the content hash associated with an INS node.\\n * @param node The INS node to query.\\n * @return The associated content hash.\\n */\\n function contentHash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xfbdc7211a813065e5cc2bdd3640c13f01c87b5f31fda86e562b0525628602c00\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n /// @dev Emitted whenever a given node/name/resource's RRSET is updated.\\n event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record);\\n /// @dev Emitted whenever a given node/name/resource's RRSET is deleted.\\n event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n /**\\n * @dev Set one or more DNS records. Records are supplied in wire-format. Records with the same node/name/resource\\n * must be supplied one after the other to ensure the data is updated correctly. For example, if the data was\\n * supplied:\\n * a.example.com IN A 1.2.3.4\\n * a.example.com IN A 5.6.7.8\\n * www.example.com IN CNAME a.example.com.\\n * then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was\\n * supplied:\\n * a.example.com IN A 1.2.3.4\\n * www.example.com IN CNAME a.example.com.\\n * a.example.com IN A 5.6.7.8\\n * then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * @param node the namehash of the node for which to set the records\\n * @param data the DNS wire format records to set\\n */\\n function setDNSRecords(bytes32 node, bytes calldata data) external;\\n\\n /**\\n * @dev Obtain a DNS record.\\n * @param node the namehash of the node for which to fetch the record\\n * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n * @return the DNS record in wire format if present, otherwise empty\\n */\\n function dnsRecord(bytes32 node, bytes32 name, uint16 resource) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x2341266d70b60f5bb666c066aaf1fdb35be81277bcdd04e3bf93ee774ae4d2f6\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n /// @dev Emitted whenever a given node's zone hash is updated.\\n event DNSZonehashChanged(bytes32 indexed node, bytes lastzonehash, bytes zonehash);\\n\\n /**\\n * @dev Sets the hash for the zone.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {DNSZonehashChanged}.\\n *\\n * @param node The node to update.\\n * @param hash The zonehash to set\\n */\\n function setZonehash(bytes32 node, bytes calldata hash) external;\\n\\n /**\\n * @dev Obtains the hash for the zone.\\n * @param node The INS node to query.\\n * @return The associated contenthash.\\n */\\n function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x42aa5409a184740461e7477b8894d7549fd3908596bb7dba9adab59b8ff4ebed\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface IInterfaceResolver {\\n /// @dev Emitted when the interface of node is changed.\\n event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer);\\n\\n /**\\n * @dev Sets an interface associated with a name.\\n * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * @param node The node to update.\\n * @param interfaceID The EIP 165 interface ID.\\n * @param implementer The address of a contract that implements this interface for this node.\\n */\\n function setInterface(bytes32 node, bytes4 interfaceID, address implementer) external;\\n\\n /**\\n * @dev Returns the address of a contract that implements the specified interface for this name.\\n *\\n * If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`.\\n * If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for\\n * the specified interfaceID, its address will be returned.\\n *\\n * @param node The INS node to query.\\n * @param interfaceID The EIP 165 interface ID to check for.\\n * @return The address that implements this interface, or 0 if the interface is unsupported.\\n */\\n function interfaceImplementer(bytes32 node, bytes4 interfaceID) external view returns (address);\\n}\\n\",\"keccak256\":\"0xb4a1867d5cb899bfdc2e812c4bf9b9d3d14b34e0f72cbeffb4e018f8659b13fc\",\"license\":\"MIT\"},\"src/interfaces/resolvers/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.0;\\n\\ninterface INameResolver {\\n /// @dev Emitted when a node name is changed.\\n event NameChanged(bytes32 indexed node, string name);\\n\\n /**\\n * @dev Sets the name associated with an INS node, for reverse records.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {NameChanged}.\\n *\\n * @param node The node to update.\\n */\\n function setName(bytes32 node, string calldata newName) external;\\n\\n /**\\n * @dev Returns the name associated with an INS node, for reverse records.\\n * @param node The INS node to query.\\n * @return The associated name.\\n */\\n function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xf3dbbe3238d5f1e491a43dbccbd74755fcd325b5c6aef6b7f0819684bd1f9da3\",\"license\":\"UNLICENSED\"},\"src/interfaces/resolvers/IPublicKeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ninterface IPublicKeyResolver {\\n struct PublicKey {\\n bytes32 x;\\n bytes32 y;\\n }\\n\\n /// @dev Emitted when a node public key is changed.\\n event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n /**\\n * @dev Sets the SECP256k1 public key associated with an INS node.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {PubkeyChanged}.\\n *\\n * @param node The INS node to query\\n * @param x the X coordinate of the curve point for the public key.\\n * @param y the Y coordinate of the curve point for the public key.\\n */\\n function setPubkey(bytes32 node, bytes32 x, bytes32 y) external;\\n\\n /**\\n * @dev Returns the SECP256k1 public key associated with an INS node.\\n * Defined in EIP 619.\\n *\\n * @param node The INS node to query\\n * @return x The X coordinate of the curve point for the public key.\\n * @return y The Y coordinate of the curve point for the public key.\\n */\\n function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x2644fd8d9b951c2aca5521ba519b68d4f3de19b731dae7907b6372e1ceac07ae\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IPublicResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"../INSUnified.sol\\\";\\nimport { INSReverseRegistrar } from \\\"../INSReverseRegistrar.sol\\\";\\nimport { IABIResolver } from \\\"./IABIResolver.sol\\\";\\nimport { IAddressResolver } from \\\"./IAddressResolver.sol\\\";\\nimport { IContentHashResolver } from \\\"./IContentHashResolver.sol\\\";\\nimport { IDNSRecordResolver } from \\\"./IDNSRecordResolver.sol\\\";\\nimport { IDNSZoneResolver } from \\\"./IDNSZoneResolver.sol\\\";\\nimport { IInterfaceResolver } from \\\"./IInterfaceResolver.sol\\\";\\nimport { INameResolver } from \\\"./INameResolver.sol\\\";\\nimport { IPublicKeyResolver } from \\\"./IPublicKeyResolver.sol\\\";\\nimport { ITextResolver } from \\\"./ITextResolver.sol\\\";\\nimport { IMulticallable } from \\\"../IMulticallable.sol\\\";\\n\\ninterface IPublicResolver is\\n IABIResolver,\\n IAddressResolver,\\n IContentHashResolver,\\n IDNSRecordResolver,\\n IDNSZoneResolver,\\n IInterfaceResolver,\\n INameResolver,\\n IPublicKeyResolver,\\n ITextResolver,\\n IMulticallable\\n{\\n /// @dev See {IERC1155-ApprovalForAll}. Logged when an operator is added or removed.\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /// @dev Logged when a delegate is approved or an approval is revoked.\\n event Approved(address owner, bytes32 indexed node, address indexed delegate, bool indexed approved);\\n\\n /**\\n * @dev Checks if an account is authorized to manage the resolution of a specific RNS node.\\n * @param node The RNS node.\\n * @param account The account address being checked for authorization.\\n * @return A boolean indicating whether the account is authorized.\\n */\\n function isAuthorized(bytes32 node, address account) external view returns (bool);\\n\\n /**\\n * @dev Retrieves the RNSUnified associated with this resolver.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Retrieves the reverse registrar associated with this resolver.\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar);\\n\\n /**\\n * @dev This function provides an extra security check when called from privileged contracts (such as\\n * RONRegistrarController) that can set records on behalf of the node owners.\\n *\\n * Reverts if the node is not null but calldata is mismatched.\\n */\\n function multicallWithNodeCheck(bytes32 node, bytes[] calldata data) external returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x97b6f762f25a4dc3f6398a76bbcb7d3922f5f440ee9e0541c83579e09a8f87b7\",\"license\":\"MIT\"},\"src/interfaces/resolvers/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ninterface ITextResolver {\\n /// @dev Emitted when a node text is changed.\\n event TextChanged(bytes32 indexed node, string indexed indexedKey, string key, string value);\\n\\n /**\\n * @dev Sets the text data associated with an INS node and key.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {TextChanged}.\\n *\\n * @param node The node to update.\\n * @param key The key to set.\\n * @param value The text data value to set.\\n */\\n function setText(bytes32 node, string calldata key, string calldata value) external;\\n\\n /**\\n * Returns the text data associated with an INS node and key.\\n * @param node The INS node to query.\\n * @param key The text data key to query.\\n * @return The associated text data.\\n */\\n function text(bytes32 node, string calldata key) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x05ce1760d3a16d99614b1a46c11308238e1ecd8be23f081fac146bbc58961ecf\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/transfers/RONTransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Strings } from \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\n\\n/**\\n * @title RONTransferHelper\\n */\\nlibrary RONTransferHelper {\\n using Strings for *;\\n\\n /**\\n * @dev Transfers RON and wraps result for the method caller to a recipient.\\n */\\n function safeTransfer(address payable _to, uint256 _value) internal {\\n bool _success = send(_to, _value);\\n if (!_success) {\\n revert(\\n string.concat(\\\"TransferHelper: could not transfer RON to \\\", _to.toHexString(), \\\" value \\\", _value.toHexString())\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns whether the call was success.\\n * Note: this function should use with the `ReentrancyGuard`.\\n */\\n function send(address payable _to, uint256 _value) internal returns (bool _success) {\\n (_success,) = _to.call{ value: _value }(new bytes(0));\\n }\\n}\\n\",\"keccak256\":\"0x733e60374ee0a33d0da2ee24976b893ca6b6d9764243b175e1ac8025240394da\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 182607, - "numDeployments": 2, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooNew\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"CommitmentTooOld\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"DurationTooShort\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"requestOwner\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"nameProtected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerWhitelisted\",\"type\":\"bool\"}],\"name\":\"ErrInvalidRegisterProtectedName\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"ErrRequestedForProtectedName\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCommitmentAgeTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameNotAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NullAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverRequiredWhenDataSupplied\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"UnexpiredCommitmentExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"name\":\"CommitmentAgeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract INSDomainPrice\",\"name\":\"newDomainPrice\",\"type\":\"address\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"MinRegistrationDurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"NameRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"expires\",\"type\":\"uint64\"}],\"name\":\"NameRenewed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"ProtectedNamesWhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"TreasuryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_DOMAIN_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"available\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"owners\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"bulkWhitelistProtectedNames\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"computeCommitment\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"computeId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCommitmentAgeRange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinRegistrationDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNameChecker\",\"outputs\":[{\"internalType\":\"contract INameChecker\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceOracle\",\"outputs\":[{\"internalType\":\"contract INSDomainPrice\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRNSUnified\",\"outputs\":[{\"internalType\":\"contract INSUnified\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReverseRegistrar\",\"outputs\":[{\"internalType\":\"contract INSReverseRegistrar\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"getWhitelistProtectedNameStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"treasury\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minRegistrationDuration\",\"type\":\"uint256\"},{\"internalType\":\"contract INSUnified\",\"name\":\"rnsUnified\",\"type\":\"address\"},{\"internalType\":\"contract INameChecker\",\"name\":\"nameChecker\",\"type\":\"address\"},{\"internalType\":\"contract INSDomainPrice\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract INSReverseRegistrar\",\"name\":\"reverseRegistrar\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"secret\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"},{\"internalType\":\"bool\",\"name\":\"reverseRecord\",\"type\":\"bool\"}],\"name\":\"registerProtectedName\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"renew\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"}],\"name\":\"rentPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minCommitmentAge\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCommitmentAge\",\"type\":\"uint256\"}],\"name\":\"setCommitmentAge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"setMinRegistrationDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INSDomainPrice\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"valid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A registrar controller for registering and renewing names at fixed cost.\",\"errors\":{\"CommitmentTooNew(bytes32)\":[{\"details\":\"Error: The provided commitment timestamp is too new for registration.\"}],\"CommitmentTooOld(bytes32)\":[{\"details\":\"Error: The provided commitment timestamp is too old for registration.\"}],\"DurationTooShort(uint64)\":[{\"details\":\"Error: The requested duration for registration is too short.\"}],\"ErrInvalidRegisterProtectedName(string,address,bool,bool)\":[{\"details\":\"Thrown when received invalid params for registering protected name\"}],\"ErrRequestedForProtectedName(string)\":[{\"details\":\"Thrown when some one requests for protected names\"}],\"InsufficientValue()\":[{\"details\":\"Error: Insufficient value (RON) provided for registration.\"}],\"InvalidArrayLength()\":[{\"details\":\"Thrown when received invalid array length\"}],\"MaxCommitmentAgeTooHigh()\":[{\"details\":\"Error: The maximum commitment age is set too high.\"}],\"MaxCommitmentAgeTooLow()\":[{\"details\":\"Error: The maximum commitment age is set too low.\"}],\"NameNotAvailable(string)\":[{\"details\":\"Error: The requested name is not available for registration.\"}],\"NullAddress()\":[{\"details\":\"Thrown when treasury address is set to null\"}],\"ResolverRequiredWhenDataSupplied()\":[{\"details\":\"Error: A resolver is required when additional data is supplied during registration.\"}],\"Unauthorized(bytes32)\":[{\"details\":\"Error: The sender is not authorized for the given RNS node.\"}],\"UnexpiredCommitmentExists(bytes32)\":[{\"details\":\"Error: An unexpired commitment already exists for the given commitment.\"}]},\"events\":{\"CommitmentAgeUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the commitment age range is updated.\",\"params\":{\"maxCommitmentAge\":\"The new maximum commitment age in seconds.\",\"minCommitmentAge\":\"The new minimum commitment age in seconds.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"DomainPriceUpdated(address,address)\":{\"details\":\"Emitted when RNSDomainPrice contract is updated.\",\"params\":{\"newDomainPrice\":\"The new duration domain price contract.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinRegistrationDurationUpdated(address,uint256)\":{\"details\":\"Emitted when the min registration duration is updated.\",\"params\":{\"duration\":\"The new duration in seconds.\",\"operator\":\"The address of the operator who triggered the update.\"}},\"NameRegistered(string,uint256,address,uint256,uint256,uint64)\":{\"details\":\"Emitted when a new name is successfully registered.\",\"params\":{\"expires\":\"The expiration timestamp of the registration.\",\"id\":\"The namehash of the registered name.\",\"name\":\"The registered name.\",\"owner\":\"The owner of the registered name.\",\"ronPrice\":\"The cost of the registration in RON.\",\"usdPrice\":\"The cost of the registration in USD.\"}},\"NameRenewed(string,uint256,uint256,uint64)\":{\"details\":\"Emitted when a name is renewed.\",\"params\":{\"cost\":\"The cost of renewal.\",\"expires\":\"The new expiration timestamp after renewal.\",\"id\":\"The namehash of the registered name.\",\"name\":\"The renewed name.\"}},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"ProtectedNamesWhitelisted(address,uint256[],address[],bool)\":{\"details\":\"Emitted the whitelist status is updated for the owners of the protected names.\",\"params\":{\"operator\":\"The address of the operator who triggered the update.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TreasuryUpdated(address)\":{\"details\":\"Emitted when the treasury is updated.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"available(string)\":{\"details\":\"Checks if a name is available for registration.\",\"params\":{\"name\":\"The name to check availability for.\"},\"returns\":{\"_0\":\"A boolean indicating whether the name is available.\"}},\"bulkWhitelistProtectedNames(uint256[],address[],bool)\":{\"details\":\"Bulk (de)whitelist for buying protected names. Requirements: - The method caller is contract operator. Emits an event {ProtectedNamesWhitelisted}.\"},\"commit(bytes32)\":{\"details\":\"Commits to a registration using the commitment hash.\",\"params\":{\"commitment\":\"The commitment hash.\"}},\"computeCommitment(string,address,uint64,bytes32,address,bytes[],bool)\":{\"details\":\"Generates the commitment hash for a registration.\",\"params\":{\"data\":\"Additional data associated with the registration.\",\"duration\":\"The duration of the registration.\",\"name\":\"The name to be registered.\",\"owner\":\"The owner of the name.\",\"resolver\":\"The resolver contract address.\",\"reverseRecord\":\"Whether to use reverse record for additional data.\",\"secret\":\"The secret used for the commitment.\"},\"returns\":{\"_0\":\"The commitment hash.\"}},\"computeId(string)\":{\"details\":\"Calculate the corresponding id given RON_ID and name.\"},\"getCommitmentAgeRange()\":{\"details\":\"Returns the range of commitment ages allowed.\"},\"getMinRegistrationDuration()\":{\"details\":\"Returns the minimum registration duration.\"},\"getNameChecker()\":{\"details\":\"Returns the INameChecker contract associated with this controller.\"},\"getPriceOracle()\":{\"details\":\"Returns the INSDomainPrice contract associated with this controller.\"},\"getRNSUnified()\":{\"details\":\"Returns the INSUnified contract associated with this controller.\"},\"getReverseRegistrar()\":{\"details\":\"Returns the IReverseRegistrar contract associated with this controller.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getTreasury()\":{\"details\":\"Returns the treasury address.\"},\"getWhitelistProtectedNameStatus(uint256,address)\":{\"details\":\"Returns the whitelist status for registering protected name.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"pause()\":{\"details\":\"Pauses the registrar controller's functionality. Requirements: - The caller must have the admin role.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"register(string,address,uint64,bytes32,address,bytes[],bool)\":{\"details\":\"Registers a new name.\",\"params\":{\"data\":\"Additional data associated with the registration.\",\"duration\":\"The duration of the registration.\",\"name\":\"The name to be registered.\",\"owner\":\"The owner of the name.\",\"resolver\":\"The resolver contract address.\",\"reverseRecord\":\"Whether to use reverse record for additional data.\",\"secret\":\"The secret used for the commitment.\"}},\"registerProtectedName(string,address,uint64,address,bytes[],bool)\":{\"details\":\"Registers a protected name. Requirements: - The owner is whitelisted for registering.\"},\"renew(string,uint64)\":{\"details\":\"Renews an existing name registration.\",\"params\":{\"duration\":\"The duration of the renewal.\",\"name\":\"The name to be renewed.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"rentPrice(string,uint64)\":{\"details\":\"Retrieves the rent price for a given name and duration.\",\"params\":{\"duration\":\"The duration of the rent.\",\"name\":\"The name for which to calculate the rent price.\"},\"returns\":{\"ronPrice\":\"rent price in ron.\",\"usdPrice\":\"rent price in usd.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setCommitmentAge(uint256,uint256)\":{\"details\":\"Sets the minimum and maximum commitment ages. Requirements: - Caller must have the DEFAULT_ADMIN_ROLE. - The `maxCommitmentAge` must be less than or equal to the current block timestamp. - The `maxCommitmentAge` must be greater than the `minCommitmentAge`. Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\",\"params\":{\"maxCommitmentAge\":\"The maximum commitment age in seconds.\",\"minCommitmentAge\":\"The minimum commitment age in seconds.\"}},\"setMinRegistrationDuration(uint256)\":{\"details\":\"Updates min registration duration. Requirements: - The caller must have the admin role.\"},\"setPriceOracle(address)\":{\"details\":\"Updates price oracle address. Requirements: - The caller must have the admin role.\"},\"setTreasury(address)\":{\"details\":\"Updates treasury address. Requirements: - The caller must have the admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unpause()\":{\"details\":\"Unpauses the registrar controller's functionality. Requirements: - The caller must have the admin role.\"},\"valid(string)\":{\"details\":\"Checks if a name is valid.\",\"params\":{\"name\":\"The name to check validity for.\"},\"returns\":{\"_0\":\"A boolean indicating whether the name is available.\"}}},\"stateVariables\":{\"MIN_DOMAIN_LENGTH\":{\"details\":\"The minimum domain name's length\"},\"OPERATOR_ROLE\":{\"details\":\"Returns the operator role.\"},\"PAUSER_ROLE\":{\"details\":\"Returns the role identifier for the pauser role.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_committedAt\":{\"details\":\"Mapping from commitment hash => timestamp that commitment made.\"},\"_maxCommitmentAge\":{\"details\":\"Maximum duration between commitment and registration in second(s).\"},\"_minCommitmentAge\":{\"details\":\"Minimum duration between commitment and registration in second(s).\"},\"_minRegistrationDuration\":{\"details\":\"Min registration duration\"},\"_nameChecker\":{\"details\":\"The namechecker contract.\"},\"_priceOracle\":{\"details\":\"The price oracle.\"},\"_protectedNamesWhitelisted\":{\"details\":\"Mapping id => owner => flag indicating whether the owner is whitelisted to buy protected name\"},\"_reverseRegistrar\":{\"details\":\"The reverse registrar contract.\"},\"_rnsUnified\":{\"details\":\"The rns unified contract.\"},\"_treasury\":{\"details\":\"The treasury address.\"}},\"title\":\"RONRegistrarController\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Customized version of ETHRegistrarController: https://github.com/ensdomains/ens-contracts/blob/45455f1229556ed4f416ef7225d4caea2c1bc0b5/contracts/ethregistrar/ETHRegistrarController.sol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RONRegistrarController.sol\":\"RONRegistrarController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk-0.3.0-beta/=dependencies/@fdk-0.3.0-beta/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin-contracts-4.9.3/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork-pyth-sdk-solidity-2.2.0/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/security/Pausable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract Pausable is Context {\\n /**\\n * @dev Emitted when the pause is triggered by `account`.\\n */\\n event Paused(address account);\\n\\n /**\\n * @dev Emitted when the pause is lifted by `account`.\\n */\\n event Unpaused(address account);\\n\\n bool private _paused;\\n\\n /**\\n * @dev Initializes the contract in unpaused state.\\n */\\n constructor() {\\n _paused = false;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is not paused.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n modifier whenNotPaused() {\\n _requireNotPaused();\\n _;\\n }\\n\\n /**\\n * @dev Modifier to make a function callable only when the contract is paused.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n modifier whenPaused() {\\n _requirePaused();\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the contract is paused, and false otherwise.\\n */\\n function paused() public view virtual returns (bool) {\\n return _paused;\\n }\\n\\n /**\\n * @dev Throws if the contract is paused.\\n */\\n function _requireNotPaused() internal view virtual {\\n require(!paused(), \\\"Pausable: paused\\\");\\n }\\n\\n /**\\n * @dev Throws if the contract is not paused.\\n */\\n function _requirePaused() internal view virtual {\\n require(paused(), \\\"Pausable: not paused\\\");\\n }\\n\\n /**\\n * @dev Triggers stopped state.\\n *\\n * Requirements:\\n *\\n * - The contract must not be paused.\\n */\\n function _pause() internal virtual whenNotPaused {\\n _paused = true;\\n emit Paused(_msgSender());\\n }\\n\\n /**\\n * @dev Returns to normal state.\\n *\\n * Requirements:\\n *\\n * - The contract must be paused.\\n */\\n function _unpause() internal virtual whenPaused {\\n _paused = false;\\n emit Unpaused(_msgSender());\\n }\\n}\\n\",\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/security/ReentrancyGuard.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Contract module that helps prevent reentrant calls to a function.\\n *\\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\\n * available, which can be applied to functions to make sure there are no nested\\n * (reentrant) calls to them.\\n *\\n * Note that because there is a single `nonReentrant` guard, functions marked as\\n * `nonReentrant` may not call one another. This can be worked around by making\\n * those functions `private`, and then adding `external` `nonReentrant` entry\\n * points to them.\\n *\\n * TIP: If you would like to learn more about reentrancy and alternative ways\\n * to protect against it, check out our blog post\\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\\n */\\nabstract contract ReentrancyGuard {\\n // Booleans are more expensive than uint256 or any type that takes up a full\\n // word because each write operation emits an extra SLOAD to first read the\\n // slot's contents, replace the bits taken up by the boolean, and then write\\n // back. This is the compiler's defense against contract upgrades and\\n // pointer aliasing, and it cannot be disabled.\\n\\n // The values being non-zero value makes deployment a bit more expensive,\\n // but in exchange the refund on every call to nonReentrant will be lower in\\n // amount. Since refunds are capped to a percentage of the total\\n // transaction's gas, it is best to keep them low in cases like this one, to\\n // increase the likelihood of the full refund coming into effect.\\n uint256 private constant _NOT_ENTERED = 1;\\n uint256 private constant _ENTERED = 2;\\n\\n uint256 private _status;\\n\\n constructor() {\\n _status = _NOT_ENTERED;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and making it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _nonReentrantBefore();\\n _;\\n _nonReentrantAfter();\\n }\\n\\n function _nonReentrantBefore() private {\\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\\n require(_status != _ENTERED, \\\"ReentrancyGuard: reentrant call\\\");\\n\\n // Any calls to nonReentrant after this point will fail\\n _status = _ENTERED;\\n }\\n\\n function _nonReentrantAfter() private {\\n // By storing the original value once again, a refund is triggered (see\\n // https://eips.ethereum.org/EIPS/eip-2200)\\n _status = _NOT_ENTERED;\\n }\\n\\n /**\\n * @dev Returns true if the reentrancy guard is currently set to \\\"entered\\\", which indicates there is a\\n * `nonReentrant` function in the call stack.\\n */\\n function _reentrancyGuardEntered() internal view returns (bool) {\\n return _status == _ENTERED;\\n }\\n}\\n\",\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RONRegistrarController.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Pausable } from \\\"@openzeppelin/contracts/security/Pausable.sol\\\";\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { ReentrancyGuard } from \\\"@openzeppelin/contracts/security/ReentrancyGuard.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { IPublicResolver } from \\\"./interfaces/resolvers/IPublicResolver.sol\\\";\\nimport {\\n INSUnified,\\n INameChecker,\\n INSDomainPrice,\\n INSReverseRegistrar,\\n IRONRegistrarController\\n} from \\\"./interfaces/IRONRegistrarController.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { RONTransferHelper } from \\\"./libraries/transfers/RONTransferHelper.sol\\\";\\n\\n/**\\n * @title RONRegistrarController\\n * @notice Customized version of ETHRegistrarController: https://github.com/ensdomains/ens-contracts/blob/45455f1229556ed4f416ef7225d4caea2c1bc0b5/contracts/ethregistrar/ETHRegistrarController.sol\\n * @dev A registrar controller for registering and renewing names at fixed cost.\\n */\\ncontract RONRegistrarController is\\n Pausable,\\n Initializable,\\n ReentrancyGuard,\\n AccessControlEnumerable,\\n IRONRegistrarController\\n{\\n using LibString for string;\\n using LibRNSDomain for string;\\n\\n /// @dev The minimum domain name's length\\n uint8 public constant MIN_DOMAIN_LENGTH = 3;\\n /// @inheritdoc IRONRegistrarController\\n bytes32 public constant PAUSER_ROLE = keccak256(\\\"PAUSER_ROLE\\\");\\n /// @inheritdoc IRONRegistrarController\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Minimum duration between commitment and registration in second(s).\\n uint256 internal _minCommitmentAge;\\n /// @dev Maximum duration between commitment and registration in second(s).\\n uint256 internal _maxCommitmentAge;\\n /// @dev Min registration duration\\n uint256 internal _minRegistrationDuration;\\n\\n /// @dev The treasury address.\\n address payable internal _treasury;\\n /// @dev The rns unified contract.\\n INSUnified internal _rnsUnified;\\n /// @dev The namechecker contract.\\n INameChecker internal _nameChecker;\\n /// @dev The price oracle.\\n INSDomainPrice internal _priceOracle;\\n /// @dev The reverse registrar contract.\\n INSReverseRegistrar internal _reverseRegistrar;\\n\\n /// @dev Mapping from commitment hash => timestamp that commitment made.\\n mapping(bytes32 commitment => uint256 timestamp) internal _committedAt;\\n /// @dev Mapping id => owner => flag indicating whether the owner is whitelisted to buy protected name\\n mapping(uint256 id => mapping(address owner => bool)) internal _protectedNamesWhitelisted;\\n\\n modifier onlyAvailable(string memory name) {\\n _requireAvailable(name);\\n _;\\n }\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address pauser,\\n address payable treasury,\\n uint256 maxCommitmentAge,\\n uint256 minCommitmentAge,\\n uint256 minRegistrationDuration,\\n INSUnified rnsUnified,\\n INameChecker nameChecker,\\n INSDomainPrice priceOracle,\\n INSReverseRegistrar reverseRegistrar\\n ) external initializer {\\n _setupRole(PAUSER_ROLE, pauser);\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n\\n _setPriceOracle(priceOracle);\\n _setMinRegistrationDuration(minRegistrationDuration);\\n _setCommitmentAge(minCommitmentAge, maxCommitmentAge);\\n _setTreasury(treasury);\\n\\n _rnsUnified = rnsUnified;\\n _nameChecker = nameChecker;\\n _reverseRegistrar = reverseRegistrar;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function pause() external onlyRole(PAUSER_ROLE) {\\n _pause();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function unpause() external onlyRole(PAUSER_ROLE) {\\n _unpause();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getMinRegistrationDuration() public view returns (uint256) {\\n return _minRegistrationDuration;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function rentPrice(string memory name, uint64 duration) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n (INSDomainPrice.UnitPrice memory basePrice, INSDomainPrice.UnitPrice memory tax) =\\n _priceOracle.getRenewalFee(name, duration);\\n usdPrice = basePrice.usd + tax.usd;\\n ronPrice = basePrice.ron + tax.ron;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function valid(string memory name) public view returns (bool) {\\n return name.strlen() >= MIN_DOMAIN_LENGTH && !_nameChecker.forbidden(name);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function available(string memory name) public view returns (bool) {\\n return valid(name) && _rnsUnified.available(computeId(name));\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function computeCommitment(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) public view onlyAvailable(name) returns (bytes32) {\\n if (data.length != 0 && resolver == address(0)) revert ResolverRequiredWhenDataSupplied();\\n return keccak256(abi.encode(computeId(name), owner, duration, secret, resolver, data, reverseRecord));\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function computeId(string memory name) public pure returns (uint256 id) {\\n return LibRNSDomain.toId(LibRNSDomain.RON_ID, name);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function commit(bytes32 commitment) external whenNotPaused {\\n if (_committedAt[commitment] + _maxCommitmentAge >= block.timestamp) revert UnexpiredCommitmentExists(commitment);\\n _committedAt[commitment] = block.timestamp;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setMinRegistrationDuration(uint256 duration) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setMinRegistrationDuration(duration);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function register(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable whenNotPaused nonReentrant {\\n uint256 id = computeId(name);\\n if (_rnsUnified.getRecord(id).mut.protected) revert ErrRequestedForProtectedName(name);\\n\\n bytes32 commitHash = computeCommitment({\\n name: name,\\n owner: owner,\\n duration: duration,\\n secret: secret,\\n resolver: resolver,\\n data: data,\\n reverseRecord: reverseRecord\\n });\\n _validateCommitment(duration, commitHash);\\n\\n (uint256 usdPrice, uint256 ronPrice) = _handlePrice(name, duration);\\n _register(name, owner, duration, resolver, data, reverseRecord, usdPrice, ronPrice);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function renew(string calldata name, uint64 duration) external payable whenNotPaused nonReentrant {\\n (, uint256 ronPrice) = rentPrice(name, duration);\\n if (msg.value < ronPrice) revert InsufficientValue();\\n uint256 remainAmount = msg.value - ronPrice;\\n\\n uint256 id = computeId(name);\\n uint64 expiryTime = _rnsUnified.renew(id, duration);\\n emit NameRenewed(name, id, ronPrice, expiryTime);\\n\\n if (remainAmount != 0) RONTransferHelper.safeTransfer(payable(_msgSender()), remainAmount);\\n _transferRONToTreasury();\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function registerProtectedName(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable whenNotPaused nonReentrant onlyAvailable(name) {\\n if (!available(name)) revert NameNotAvailable(name);\\n uint256 id = computeId(name);\\n bool protected = _rnsUnified.getRecord(id).mut.protected;\\n bool whitelisted = _protectedNamesWhitelisted[id][owner];\\n if (!protected || !whitelisted) revert ErrInvalidRegisterProtectedName(name, owner, protected, whitelisted);\\n\\n (uint256 usdPrice, uint256 ronPrice) = _handlePrice(name, duration);\\n _register(name, owner, duration, resolver, data, reverseRecord, usdPrice, ronPrice);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function bulkWhitelistProtectedNames(uint256[] calldata ids, address[] calldata owners, bool status)\\n external\\n onlyRole(OPERATOR_ROLE)\\n {\\n uint256 length = ids.length;\\n if (length == 0 || length != owners.length) revert InvalidArrayLength();\\n\\n for (uint256 i; i < length;) {\\n _protectedNamesWhitelisted[ids[i]][owners[i]] = status;\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n emit ProtectedNamesWhitelisted(_msgSender(), ids, owners, status);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getWhitelistProtectedNameStatus(uint256 id, address owner) external view returns (bool status) {\\n return _protectedNamesWhitelisted[id][owner];\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setTreasury(address payable addr) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTreasury(addr);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setCommitmentAge(minCommitmentAge, maxCommitmentAge);\\n }\\n\\n /**\\n * @dev Internal function to update the commitment age range.\\n * Requirements:\\n * - The `maxCommitmentAge` must be less than or equal to the current block timestamp.\\n * - The `maxCommitmentAge` must be greater than the `minCommitmentAge`.\\n * Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\\n * @param minCommitmentAge The minimum commitment age in seconds.\\n * @param maxCommitmentAge The maximum commitment age in seconds.\\n */\\n function _setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) internal {\\n if (maxCommitmentAge > block.timestamp) revert MaxCommitmentAgeTooHigh();\\n if (maxCommitmentAge <= minCommitmentAge) revert MaxCommitmentAgeTooLow();\\n\\n _minCommitmentAge = minCommitmentAge;\\n _maxCommitmentAge = maxCommitmentAge;\\n\\n emit CommitmentAgeUpdated(_msgSender(), minCommitmentAge, maxCommitmentAge);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function setPriceOracle(INSDomainPrice priceOracle) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setPriceOracle(priceOracle);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getTreasury() external view returns (address) {\\n return _treasury;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getCommitmentAgeRange() external view returns (uint256 minCommitmentAge, uint256 maxCommitmentAge) {\\n return (_minCommitmentAge, _maxCommitmentAge);\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getRNSUnified() external view returns (INSUnified) {\\n return _rnsUnified;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getPriceOracle() external view returns (INSDomainPrice) {\\n return _priceOracle;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getNameChecker() external view returns (INameChecker) {\\n return _nameChecker;\\n }\\n\\n /**\\n * @inheritdoc IRONRegistrarController\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar) {\\n return _reverseRegistrar;\\n }\\n\\n /**\\n * @dev Validates commitment.\\n *\\n * Requirements:\\n * - The duration must larger than or equal to minimum registration duration.\\n * - The passed duration must in a valid range.\\n */\\n function _validateCommitment(uint64 duration, bytes32 commitment) internal {\\n if (duration < _minRegistrationDuration) revert DurationTooShort(duration);\\n\\n uint256 passedDuration = block.timestamp - _committedAt[commitment];\\n if (passedDuration < _minCommitmentAge) revert CommitmentTooNew(commitment);\\n if (_maxCommitmentAge < passedDuration) revert CommitmentTooOld(commitment);\\n\\n delete _committedAt[commitment];\\n }\\n\\n /**\\n * @dev Sets minimum registration duration.\\n * Emits a {MinRegistrationDurationUpdated} event indicating the successful update of the registration duration.\\n */\\n function _setMinRegistrationDuration(uint256 duration) internal {\\n _minRegistrationDuration = duration;\\n emit MinRegistrationDurationUpdated(_msgSender(), duration);\\n }\\n\\n /**\\n * @dev Sets data into resolver address contract.\\n */\\n function _setRecords(address resolverAddress, uint256 id, bytes[] calldata data) internal {\\n IPublicResolver(resolverAddress).multicallWithNodeCheck(bytes32(id), data);\\n }\\n\\n /**\\n * @dev Sets data into reverse registrar.\\n */\\n function _setReverseRecord(string memory name, address owner) internal {\\n _reverseRegistrar.setNameForAddr(owner, string.concat(name, \\\".ron\\\"));\\n }\\n\\n /**\\n * @dev Helper method to take fee into treasury address.\\n */\\n function _transferRONToTreasury() internal {\\n RONTransferHelper.safeTransfer(_treasury, address(this).balance);\\n }\\n\\n /**\\n * @dev Helper method to take renewal fee of a name.\\n */\\n function _handlePrice(string memory name, uint64 duration) internal returns (uint256 usdPrice, uint256 ronPrice) {\\n (usdPrice, ronPrice) = rentPrice(name, duration);\\n if (msg.value < ronPrice) revert InsufficientValue();\\n\\n unchecked {\\n uint256 remainAmount = msg.value - ronPrice;\\n if (remainAmount != 0) RONTransferHelper.safeTransfer(payable(_msgSender()), remainAmount);\\n }\\n\\n _transferRONToTreasury();\\n }\\n\\n /**\\n * @dev Helper method to register a name for owner.\\n *\\n * Emits an event {NameRegistered}.\\n */\\n function _register(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord,\\n uint256 usdPrice,\\n uint256 ronPrice\\n ) internal {\\n (uint64 expiryTime, uint256 id) = _rnsUnified.mint(LibRNSDomain.RON_ID, name, resolver, owner, duration);\\n if (data.length != 0) _setRecords(resolver, id, data);\\n if (reverseRecord) _setReverseRecord(name, owner);\\n emit NameRegistered(name, id, owner, ronPrice, usdPrice, expiryTime);\\n }\\n\\n /**\\n * @dev Helper method to update RNSDomainPrice contract.\\n *\\n * Emits an event {DomainPriceUpdated}.\\n */\\n function _setPriceOracle(INSDomainPrice priceOracle) internal {\\n _priceOracle = priceOracle;\\n emit DomainPriceUpdated(_msgSender(), priceOracle);\\n }\\n\\n /**\\n * @dev Helper method to update treasury address.\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function _setTreasury(address payable addr) internal {\\n if (addr == address(0x0)) revert NullAddress();\\n\\n _treasury = addr;\\n\\n emit TreasuryUpdated(addr);\\n }\\n\\n /**\\n * @dev Helper method to check if a domain name is available for register.\\n */\\n function _requireAvailable(string memory name) internal view {\\n if (!available(name)) revert NameNotAvailable(name);\\n }\\n}\\n\",\"keccak256\":\"0x364878c7a629a72d59891dd370f6826eb75c1afb5bf1113c2ef6931233197766\",\"license\":\"MIT\"},\"src/interfaces/IMulticallable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice To multi-call to a specified contract which has multicall interface:\\n *\\n * ```solidity\\n * interface IMock is IMulticallable {\\n * function foo() external;\\n * function bar() external;\\n * }\\n *\\n * bytes[] memory calldatas = new bytes[](2);\\n * calldatas[0] = abi.encodeCall(IMock.foo,());\\n * calldatas[1] = abi.encodeCall(IMock.bar,());\\n * IMock(target).multicall(calldatas);\\n * ```\\n */\\ninterface IMulticallable {\\n /**\\n * @dev Executes bulk action to the original contract.\\n * Reverts if there is a single call failed.\\n *\\n * @param data The calldata to original contract.\\n *\\n */\\n function multicall(bytes[] calldata data) external returns (bytes[] memory results);\\n\\n /**\\n * @dev Executes bulk action to the original contract.\\n *\\n * @param requireSuccess Flag to indicating whether the contract reverts if there is a single call failed.\\n * @param data The calldata to original contract.\\n *\\n */\\n function tryMulticall(bool requireSuccess, bytes[] calldata data) external returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x0e76578b0efeafdf33915d77d3f98145ac2f74cdd311db03a9b94d4aa566d107\",\"license\":\"UNLICENSED\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSReverseRegistrar.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport { INameResolver } from \\\"./resolvers/INameResolver.sol\\\";\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\n\\n/// @dev See https://eips.ethereum.org/EIPS/eip-181#registrar\\ninterface IERC181 {\\n /**\\n * @dev Claims the name hex(addr) + '.addr.reverse' for addr.\\n *\\n * @param addr The address to set as the addr of the reverse record in INS.\\n * @return id The INS node hash of the reverse record.\\n */\\n function claim(address addr) external returns (uint256 id);\\n\\n /**\\n * @dev Claims the name hex(owner) + '.addr.reverse' for owner and sets resolver.\\n *\\n * @param addr The address to set as the owner of the reverse record in INS.\\n * @param resolver The address of the resolver to set; 0 to leave unchanged.\\n * @return id The INS node hash of the reverse record.\\n */\\n function claimWithResolver(address addr, address resolver) external returns (uint256 id);\\n\\n /**\\n * @dev Sets the name record for the reverse INS record associated with the calling account. First updates the\\n * resolver to the default reverse resolver if necessary.\\n *\\n * @param name The name to set for this address.\\n * @return The INS node hash of the reverse record.\\n */\\n function setName(string memory name) external returns (uint256);\\n}\\n\\ninterface INSReverseRegistrar is IERC181, IERC165 {\\n /// @dev Error: The provided id is not child node of `ADDR_REVERSE_ID`\\n error InvalidId();\\n /// @dev Error: The contract is not authorized for minting or modifying domain hex(addr) + '.addr.reverse'.\\n error InvalidConfig();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: The provided resolver address is null.\\n error NullAssignment();\\n\\n /// @dev Emitted when reverse node is claimed.\\n event ReverseClaimed(address indexed addr, uint256 indexed id);\\n /// @dev Emitted when the default resolver is changed.\\n event DefaultResolverChanged(INameResolver indexed resolver);\\n\\n /**\\n * @dev Returns the controller role.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns default resolver.\\n */\\n function getDefaultResolver() external view returns (INameResolver);\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Sets default resolver.\\n *\\n * Requirement:\\n *\\n * - The method caller must be admin.\\n *\\n * Emitted an event {DefaultResolverChanged}.\\n *\\n */\\n function setDefaultResolver(INameResolver resolver) external;\\n\\n /**\\n * @dev Same as {IERC181-setName}.\\n */\\n function setNameForAddr(address addr, string memory name) external returns (uint256 id);\\n\\n /**\\n * @dev Returns address that the reverse node resolves for.\\n * Eg. node namehash('{addr}.addr.reverse') will always resolve for `addr`.\\n */\\n function getAddress(uint256 id) external view returns (address);\\n\\n /**\\n * @dev Returns the id hash for a given account's reverse records.\\n * @param addr The address to hash\\n * @return The INS node hash.\\n */\\n function computeId(address addr) external pure returns (uint256);\\n}\\n\",\"keccak256\":\"0x3b88e9ea1dd7c128244b5d0c69cee9dcadcb16b05a7e13416cc7b95c071b60a4\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/interfaces/INameChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title INameChecker\\n * @dev The INameChecker interface provides functions for managing and checking substrings and forbidden words in strings.\\n */\\ninterface INameChecker {\\n /**\\n * @dev Emitted when the word range is updated.\\n * @param operator The address that updated the word range.\\n * @param min The minimum word length allowed.\\n * @param max The maximum word length allowed.\\n */\\n event WordRangeUpdated(address indexed operator, uint8 min, uint8 max);\\n\\n /**\\n * @dev Emitted when the forbidden words are updated.\\n * @param operator The address that updated the forbidden words list.\\n * @param wordCount The number of words in the list.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n event ForbiddenWordsUpdated(address indexed operator, uint256 wordCount, bool shouldForbid);\\n\\n /**\\n * @dev Returns an array of all substrings of a given string.\\n * @param str The input string to analyze.\\n * @return subStrings An array of all substrings.\\n */\\n function getAllSubStrings(string calldata str) external view returns (string[] memory subStrings);\\n\\n /**\\n * @dev Returns the total number of substrings for a given string length, as well as the minimum and maximum allowed word lengths.\\n * @param strlen The length of the input string.\\n * @return total The total number of substrings.\\n * @return min The minimum word length allowed.\\n * @return max The maximum word length allowed.\\n */\\n function totalSubString(uint256 strlen) external view returns (uint256 total, uint256 min, uint256 max);\\n\\n /**\\n * @dev Sets a list of forbidden words and specifies whether they should be forbidden.\\n * @param packedWords An array of packed word representations.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n function setForbiddenWords(uint256[] calldata packedWords, bool shouldForbid) external;\\n\\n /**\\n * @dev Sets a list of forbidden words and specifies whether they should be forbidden.\\n * @param words An array of raw words in string representations.\\n * @param shouldForbid Boolean indicating whether the specified words should be forbidden.\\n */\\n function setForbiddenWords(string[] calldata words, bool shouldForbid) external;\\n\\n /**\\n * @dev Sets the minimum and maximum word lengths allowed.\\n * @param min The minimum word length.\\n * @param max The maximum word length.\\n */\\n function setWordRange(uint8 min, uint8 max) external;\\n\\n /**\\n * @dev Retrieves the current minimum and maximum word lengths allowed.\\n * @return min The minimum word length allowed.\\n * @return max The maximum word length allowed.\\n */\\n function getWordRange() external view returns (uint8 min, uint8 max);\\n\\n /**\\n * @notice Checks if a given name contains any forbidden characters or blacklisted words.\\n * @param name The string to check.\\n * @return true if the name contains forbidden characters or blacklisted words, false otherwise.\\n */\\n function forbidden(string calldata name) external view returns (bool);\\n\\n /**\\n * @notice Checks if a given name contains any blacklisted words.\\n * @param name The string to check.\\n * @return true if the name contains blacklisted words, false otherwise.\\n */\\n function containsBlacklistedWord(string calldata name) external view returns (bool);\\n\\n /**\\n * @notice Checks if a given name contains any invalid characters.\\n * requirements:\\n * - all characters in name must in range [a-z] or [0-9].\\n * @param name The string to check.\\n * @return true if the name contains invalid characters, false otherwise.\\n */\\n function containsInvalidCharacter(string calldata name) external pure returns (bool);\\n\\n /**\\n * @dev Packs a string into a single word representation.\\n * @param str The string to be packed.\\n * @notice Returns `uint256(0)` if the length is zero or greater than 31.\\n * @return packed The packed value of the input string.\\n */\\n function pack(string memory str) external pure returns (uint256 packed);\\n\\n /**\\n * @dev Packs an array of strings into their single word representations.\\n * @param strs The array of strings to be packed.\\n * @notice Returns an array of packed values, along with the minimum and maximum string lengths.\\n * @return packeds An array containing the packed values of the input strings.\\n */\\n function packBulk(string[] memory strs) external pure returns (uint256[] memory packeds);\\n}\\n\",\"keccak256\":\"0x9f2b9f08f8d60f565f93925ad64353f01feaad671440d865f45008d1304d4794\",\"license\":\"MIT\"},\"src/interfaces/IRONRegistrarController.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { INSDomainPrice } from \\\"./INSDomainPrice.sol\\\";\\nimport { INameChecker } from \\\"./INameChecker.sol\\\";\\nimport { INSReverseRegistrar } from \\\"./INSReverseRegistrar.sol\\\";\\n\\n/**\\n * @title IRONRegistrarController\\n * @dev Interface for the Registrar Controller contract that manages the registration, renewal, and commitment of RNS\\n * names.\\n */\\ninterface IRONRegistrarController {\\n /// @dev Error: The provided commitment timestamp is too new for registration.\\n error CommitmentTooNew(bytes32 commitment);\\n /// @dev Error: The provided commitment timestamp is too old for registration.\\n error CommitmentTooOld(bytes32 commitment);\\n /// @dev Error: The requested name is not available for registration.\\n error NameNotAvailable(string name);\\n /// @dev Error: The requested duration for registration is too short.\\n error DurationTooShort(uint64 duration);\\n /// @dev Error: A resolver is required when additional data is supplied during registration.\\n error ResolverRequiredWhenDataSupplied();\\n /// @dev Error: An unexpired commitment already exists for the given commitment.\\n error UnexpiredCommitmentExists(bytes32 commitment);\\n /// @dev Error: Insufficient value (RON) provided for registration.\\n error InsufficientValue();\\n /// @dev Error: The sender is not authorized for the given RNS node.\\n error Unauthorized(bytes32 node);\\n /// @dev Error: The maximum commitment age is set too low.\\n error MaxCommitmentAgeTooLow();\\n /// @dev Error: The maximum commitment age is set too high.\\n error MaxCommitmentAgeTooHigh();\\n /// @dev Thrown when some one requests for protected names\\n error ErrRequestedForProtectedName(string name);\\n /// @dev Thrown when received invalid params for registering protected name\\n error ErrInvalidRegisterProtectedName(string name, address requestOwner, bool nameProtected, bool ownerWhitelisted);\\n /// @dev Thrown when received invalid array length\\n error InvalidArrayLength();\\n /// @dev Thrown when treasury address is set to null\\n error NullAddress();\\n\\n /**\\n * @dev Emitted when the min registration duration is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param duration The new duration in seconds.\\n */\\n event MinRegistrationDurationUpdated(address indexed operator, uint256 duration);\\n\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n\\n /**\\n * @dev Emitted when RNSDomainPrice contract is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param newDomainPrice The new duration domain price contract.\\n */\\n event DomainPriceUpdated(address indexed operator, INSDomainPrice newDomainPrice);\\n\\n /**\\n * @dev Emitted when the commitment age range is updated.\\n * @param operator The address of the operator who triggered the update.\\n * @param minCommitmentAge The new minimum commitment age in seconds.\\n * @param maxCommitmentAge The new maximum commitment age in seconds.\\n */\\n event CommitmentAgeUpdated(address indexed operator, uint256 minCommitmentAge, uint256 maxCommitmentAge);\\n\\n /**\\n * @dev Emitted when a new name is successfully registered.\\n * @param name The registered name.\\n * @param id The namehash of the registered name.\\n * @param owner The owner of the registered name.\\n * @param ronPrice The cost of the registration in RON.\\n * @param usdPrice The cost of the registration in USD.\\n * @param expires The expiration timestamp of the registration.\\n */\\n event NameRegistered(\\n string name, uint256 indexed id, address indexed owner, uint256 ronPrice, uint256 usdPrice, uint64 expires\\n );\\n\\n /**\\n * @dev Emitted when a name is renewed.\\n * @param name The renewed name.\\n * @param id The namehash of the registered name.\\n * @param cost The cost of renewal.\\n * @param expires The new expiration timestamp after renewal.\\n */\\n event NameRenewed(string name, uint256 indexed id, uint256 cost, uint64 expires);\\n\\n /**\\n * @dev Emitted the whitelist status is updated for the owners of the protected names.\\n * @param operator The address of the operator who triggered the update.\\n */\\n event ProtectedNamesWhitelisted(address indexed operator, uint256[] ids, address[] owners, bool status);\\n\\n /**\\n * @dev Retrieves the rent price for a given name and duration.\\n * @param name The name for which to calculate the rent price.\\n * @param duration The duration of the rent.\\n * @return usdPrice rent price in usd.\\n * @return ronPrice rent price in ron.\\n */\\n function rentPrice(string memory name, uint64 duration) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Calculate the corresponding id given RON_ID and name.\\n */\\n function computeId(string memory name) external pure returns (uint256 id);\\n\\n /**\\n * @dev Checks if a name is valid.\\n * @param name The name to check validity for.\\n * @return A boolean indicating whether the name is available.\\n */\\n function valid(string memory name) external view returns (bool);\\n\\n /**\\n * @dev Checks if a name is available for registration.\\n * @param name The name to check availability for.\\n * @return A boolean indicating whether the name is available.\\n */\\n function available(string memory name) external returns (bool);\\n\\n /**\\n * @dev Generates the commitment hash for a registration.\\n * @param name The name to be registered.\\n * @param owner The owner of the name.\\n * @param duration The duration of the registration.\\n * @param secret The secret used for the commitment.\\n * @param resolver The resolver contract address.\\n * @param data Additional data associated with the registration.\\n * @param reverseRecord Whether to use reverse record for additional data.\\n * @return The commitment hash.\\n */\\n function computeCommitment(\\n string memory name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external view returns (bytes32);\\n\\n /**\\n * @dev Commits to a registration using the commitment hash.\\n * @param commitment The commitment hash.\\n */\\n function commit(bytes32 commitment) external;\\n\\n /**\\n * @dev Registers a new name.\\n * @param name The name to be registered.\\n * @param owner The owner of the name.\\n * @param duration The duration of the registration.\\n * @param secret The secret used for the commitment.\\n * @param resolver The resolver contract address.\\n * @param data Additional data associated with the registration.\\n * @param reverseRecord Whether to use reverse record for additional data.\\n */\\n function register(\\n string calldata name,\\n address owner,\\n uint64 duration,\\n bytes32 secret,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable;\\n\\n /**\\n * @dev Renews an existing name registration.\\n * @param name The name to be renewed.\\n * @param duration The duration of the renewal.\\n */\\n function renew(string calldata name, uint64 duration) external payable;\\n\\n /**\\n * @dev Registers a protected name.\\n *\\n * Requirements:\\n * - The owner is whitelisted for registering.\\n */\\n function registerProtectedName(\\n string memory name,\\n address owner,\\n uint64 duration,\\n address resolver,\\n bytes[] calldata data,\\n bool reverseRecord\\n ) external payable;\\n\\n /**\\n * @dev Updates min registration duration.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function setMinRegistrationDuration(uint256 duration) external;\\n\\n /**\\n * @dev Sets the minimum and maximum commitment ages.\\n *\\n * Requirements:\\n * - Caller must have the DEFAULT_ADMIN_ROLE.\\n * - The `maxCommitmentAge` must be less than or equal to the current block timestamp.\\n * - The `maxCommitmentAge` must be greater than the `minCommitmentAge`.\\n *\\n * Emits a {CommitmentAgeUpdated} event indicating the successful update of the age range.\\n *\\n * @param minCommitmentAge The minimum commitment age in seconds.\\n * @param maxCommitmentAge The maximum commitment age in seconds.\\n */\\n function setCommitmentAge(uint256 minCommitmentAge, uint256 maxCommitmentAge) external;\\n\\n /**\\n * @dev Bulk (de)whitelist for buying protected names.\\n *\\n * Requirements:\\n * - The method caller is contract operator.\\n *\\n * Emits an event {ProtectedNamesWhitelisted}.\\n */\\n function bulkWhitelistProtectedNames(uint256[] calldata ids, address[] calldata owners, bool status) external;\\n\\n /**\\n * @dev Returns the whitelist status for registering protected name.\\n */\\n function getWhitelistProtectedNameStatus(uint256 id, address owner) external view returns (bool status);\\n\\n /**\\n * @dev Updates treasury address.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Updates price oracle address.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n */\\n function setPriceOracle(INSDomainPrice) external;\\n\\n /**\\n * @dev Returns the treasury address.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Pauses the registrar controller's functionality.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function pause() external;\\n\\n /**\\n * @dev Unpauses the registrar controller's functionality.\\n *\\n * Requirements:\\n * - The caller must have the admin role.\\n *\\n */\\n function unpause() external;\\n\\n /**\\n * @dev Returns the role identifier for the pauser role.\\n */\\n function PAUSER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the threshold for valid name length.\\n */\\n function MIN_DOMAIN_LENGTH() external view returns (uint8);\\n\\n /**\\n * @dev Returns the minimum registration duration.\\n */\\n function getMinRegistrationDuration() external view returns (uint256);\\n\\n /**\\n * @dev Returns the range of commitment ages allowed.\\n */\\n function getCommitmentAgeRange() external view returns (uint256 minCommitmentAge, uint256 maxCommitmentAge);\\n\\n /**\\n * @dev Returns the INSUnified contract associated with this controller.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Returns the INSDomainPrice contract associated with this controller.\\n */\\n function getPriceOracle() external view returns (INSDomainPrice);\\n\\n /**\\n * @dev Returns the INameChecker contract associated with this controller.\\n */\\n function getNameChecker() external view returns (INameChecker);\\n\\n /**\\n * @dev Returns the IReverseRegistrar contract associated with this controller.\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar);\\n}\\n\",\"keccak256\":\"0x537b708f5188b82cd1374feebb0a855988a935206dfbf84abe550876e03228f1\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IABIResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.0;\\n\\ninterface IABIResolver {\\n /// Thrown when the input content type is invalid.\\n error InvalidContentType();\\n\\n /// @dev Emitted when the ABI is changed.\\n event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\\n\\n /**\\n * @dev Sets the ABI associated with an INS node. Nodes may have one ABI of each content type. To remove an ABI, set it\\n * to the empty string.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n * - The content type must be powers of 2.\\n *\\n * Emitted an event {ABIChanged}.\\n *\\n * @param node The node to update.\\n * @param contentType The content type of the ABI\\n * @param data The ABI data.\\n */\\n function setABI(bytes32 node, uint256 contentType, bytes calldata data) external;\\n\\n /**\\n * @dev Returns the ABI associated with an INS node.\\n * Defined in EIP-205, see more at https://eips.ethereum.org/EIPS/eip-205\\n *\\n * @param node The INS node to query\\n * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\\n * @return contentType The content type of the return value\\n * @return data The ABI data\\n */\\n function ABI(bytes32 node, uint256 contentTypes) external view returns (uint256 contentType, bytes memory data);\\n}\\n\",\"keccak256\":\"0xc701a6cafa883d6607b5916dfb4277099f39c450930d776da36a7acc2b2498c0\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IAddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.0;\\n\\ninterface IAddressResolver {\\n /// @dev Emitted when an address of a node is changed.\\n event AddrChanged(bytes32 indexed node, address addr);\\n\\n /**\\n * @dev Sets the address associated with an INS node.\\n *\\n * Requirement:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {AddrChanged}.\\n *\\n * @param node The node to update.\\n * @param addr The address to set.\\n */\\n function setAddr(bytes32 node, address addr) external;\\n\\n /**\\n * @dev Returns the address associated with an INS node.\\n * @param node The INS node to query.\\n * @return The associated address.\\n */\\n function addr(bytes32 node) external view returns (address payable);\\n}\\n\",\"keccak256\":\"0xb914cb4a730d20c867805fd148e7574c6565bc6c0a129825cdf3cf4f2f7f72d0\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IContentHashResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface IContentHashResolver {\\n /// @dev Emitted when the content hash of a node is changed.\\n event ContentHashChanged(bytes32 indexed node, bytes hash);\\n\\n /**\\n * @dev Sets the content hash associated with an INS node.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {ContentHashChanged}.\\n *\\n * @param node The node to update.\\n * @param hash The content hash to set\\n */\\n function setContentHash(bytes32 node, bytes calldata hash) external;\\n\\n /**\\n * @dev Returns the content hash associated with an INS node.\\n * @param node The INS node to query.\\n * @return The associated content hash.\\n */\\n function contentHash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0xfbdc7211a813065e5cc2bdd3640c13f01c87b5f31fda86e562b0525628602c00\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IDNSRecordResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSRecordResolver {\\n /// @dev Emitted whenever a given node/name/resource's RRSET is updated.\\n event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record);\\n /// @dev Emitted whenever a given node/name/resource's RRSET is deleted.\\n event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\\n\\n /**\\n * @dev Set one or more DNS records. Records are supplied in wire-format. Records with the same node/name/resource\\n * must be supplied one after the other to ensure the data is updated correctly. For example, if the data was\\n * supplied:\\n * a.example.com IN A 1.2.3.4\\n * a.example.com IN A 5.6.7.8\\n * www.example.com IN CNAME a.example.com.\\n * then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was\\n * supplied:\\n * a.example.com IN A 1.2.3.4\\n * www.example.com IN CNAME a.example.com.\\n * a.example.com IN A 5.6.7.8\\n * then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * @param node the namehash of the node for which to set the records\\n * @param data the DNS wire format records to set\\n */\\n function setDNSRecords(bytes32 node, bytes calldata data) external;\\n\\n /**\\n * @dev Obtain a DNS record.\\n * @param node the namehash of the node for which to fetch the record\\n * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\\n * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\\n * @return the DNS record in wire format if present, otherwise empty\\n */\\n function dnsRecord(bytes32 node, bytes32 name, uint16 resource) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x2341266d70b60f5bb666c066aaf1fdb35be81277bcdd04e3bf93ee774ae4d2f6\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IDNSZoneResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >=0.8.4;\\n\\ninterface IDNSZoneResolver {\\n /// @dev Emitted whenever a given node's zone hash is updated.\\n event DNSZonehashChanged(bytes32 indexed node, bytes lastzonehash, bytes zonehash);\\n\\n /**\\n * @dev Sets the hash for the zone.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {DNSZonehashChanged}.\\n *\\n * @param node The node to update.\\n * @param hash The zonehash to set\\n */\\n function setZonehash(bytes32 node, bytes calldata hash) external;\\n\\n /**\\n * @dev Obtains the hash for the zone.\\n * @param node The INS node to query.\\n * @return The associated contenthash.\\n */\\n function zonehash(bytes32 node) external view returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x42aa5409a184740461e7477b8894d7549fd3908596bb7dba9adab59b8ff4ebed\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IInterfaceResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\ninterface IInterfaceResolver {\\n /// @dev Emitted when the interface of node is changed.\\n event InterfaceChanged(bytes32 indexed node, bytes4 indexed interfaceID, address implementer);\\n\\n /**\\n * @dev Sets an interface associated with a name.\\n * Setting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * @param node The node to update.\\n * @param interfaceID The EIP 165 interface ID.\\n * @param implementer The address of a contract that implements this interface for this node.\\n */\\n function setInterface(bytes32 node, bytes4 interfaceID, address implementer) external;\\n\\n /**\\n * @dev Returns the address of a contract that implements the specified interface for this name.\\n *\\n * If an implementer has not been set for this interfaceID and name, the resolver will query the contract at `addr()`.\\n * If `addr()` is set, a contract exists at that address, and that contract implements EIP165 and returns `true` for\\n * the specified interfaceID, its address will be returned.\\n *\\n * @param node The INS node to query.\\n * @param interfaceID The EIP 165 interface ID to check for.\\n * @return The address that implements this interface, or 0 if the interface is unsupported.\\n */\\n function interfaceImplementer(bytes32 node, bytes4 interfaceID) external view returns (address);\\n}\\n\",\"keccak256\":\"0xb4a1867d5cb899bfdc2e812c4bf9b9d3d14b34e0f72cbeffb4e018f8659b13fc\",\"license\":\"MIT\"},\"src/interfaces/resolvers/INameResolver.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.0;\\n\\ninterface INameResolver {\\n /// @dev Emitted when a node name is changed.\\n event NameChanged(bytes32 indexed node, string name);\\n\\n /**\\n * @dev Sets the name associated with an INS node, for reverse records.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {NameChanged}.\\n *\\n * @param node The node to update.\\n */\\n function setName(bytes32 node, string calldata newName) external;\\n\\n /**\\n * @dev Returns the name associated with an INS node, for reverse records.\\n * @param node The INS node to query.\\n * @return The associated name.\\n */\\n function name(bytes32 node) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0xf3dbbe3238d5f1e491a43dbccbd74755fcd325b5c6aef6b7f0819684bd1f9da3\",\"license\":\"UNLICENSED\"},\"src/interfaces/resolvers/IPublicKeyResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ninterface IPublicKeyResolver {\\n struct PublicKey {\\n bytes32 x;\\n bytes32 y;\\n }\\n\\n /// @dev Emitted when a node public key is changed.\\n event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\\n\\n /**\\n * @dev Sets the SECP256k1 public key associated with an INS node.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {PubkeyChanged}.\\n *\\n * @param node The INS node to query\\n * @param x the X coordinate of the curve point for the public key.\\n * @param y the Y coordinate of the curve point for the public key.\\n */\\n function setPubkey(bytes32 node, bytes32 x, bytes32 y) external;\\n\\n /**\\n * @dev Returns the SECP256k1 public key associated with an INS node.\\n * Defined in EIP 619.\\n *\\n * @param node The INS node to query\\n * @return x The X coordinate of the curve point for the public key.\\n * @return y The Y coordinate of the curve point for the public key.\\n */\\n function pubkey(bytes32 node) external view returns (bytes32 x, bytes32 y);\\n}\\n\",\"keccak256\":\"0x2644fd8d9b951c2aca5521ba519b68d4f3de19b731dae7907b6372e1ceac07ae\",\"license\":\"MIT\"},\"src/interfaces/resolvers/IPublicResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"../INSUnified.sol\\\";\\nimport { INSReverseRegistrar } from \\\"../INSReverseRegistrar.sol\\\";\\nimport { IABIResolver } from \\\"./IABIResolver.sol\\\";\\nimport { IAddressResolver } from \\\"./IAddressResolver.sol\\\";\\nimport { IContentHashResolver } from \\\"./IContentHashResolver.sol\\\";\\nimport { IDNSRecordResolver } from \\\"./IDNSRecordResolver.sol\\\";\\nimport { IDNSZoneResolver } from \\\"./IDNSZoneResolver.sol\\\";\\nimport { IInterfaceResolver } from \\\"./IInterfaceResolver.sol\\\";\\nimport { INameResolver } from \\\"./INameResolver.sol\\\";\\nimport { IPublicKeyResolver } from \\\"./IPublicKeyResolver.sol\\\";\\nimport { ITextResolver } from \\\"./ITextResolver.sol\\\";\\nimport { IMulticallable } from \\\"../IMulticallable.sol\\\";\\n\\ninterface IPublicResolver is\\n IABIResolver,\\n IAddressResolver,\\n IContentHashResolver,\\n IDNSRecordResolver,\\n IDNSZoneResolver,\\n IInterfaceResolver,\\n INameResolver,\\n IPublicKeyResolver,\\n ITextResolver,\\n IMulticallable\\n{\\n /// @dev See {IERC1155-ApprovalForAll}. Logged when an operator is added or removed.\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /// @dev Logged when a delegate is approved or an approval is revoked.\\n event Approved(address owner, bytes32 indexed node, address indexed delegate, bool indexed approved);\\n\\n /**\\n * @dev Checks if an account is authorized to manage the resolution of a specific RNS node.\\n * @param node The RNS node.\\n * @param account The account address being checked for authorization.\\n * @return A boolean indicating whether the account is authorized.\\n */\\n function isAuthorized(bytes32 node, address account) external view returns (bool);\\n\\n /**\\n * @dev Retrieves the RNSUnified associated with this resolver.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n\\n /**\\n * @dev Retrieves the reverse registrar associated with this resolver.\\n */\\n function getReverseRegistrar() external view returns (INSReverseRegistrar);\\n\\n /**\\n * @dev This function provides an extra security check when called from privileged contracts (such as\\n * RONRegistrarController) that can set records on behalf of the node owners.\\n *\\n * Reverts if the node is not null but calldata is mismatched.\\n */\\n function multicallWithNodeCheck(bytes32 node, bytes[] calldata data) external returns (bytes[] memory results);\\n}\\n\",\"keccak256\":\"0x97b6f762f25a4dc3f6398a76bbcb7d3922f5f440ee9e0541c83579e09a8f87b7\",\"license\":\"MIT\"},\"src/interfaces/resolvers/ITextResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ninterface ITextResolver {\\n /// @dev Emitted when a node text is changed.\\n event TextChanged(bytes32 indexed node, string indexed indexedKey, string key, string value);\\n\\n /**\\n * @dev Sets the text data associated with an INS node and key.\\n *\\n * Requirements:\\n * - The method caller must be authorized to change user fields of RNS Token `node`. See indicator\\n * {ModifyingIndicator.USER_FIELDS_INDICATOR}.\\n *\\n * Emits an event {TextChanged}.\\n *\\n * @param node The node to update.\\n * @param key The key to set.\\n * @param value The text data value to set.\\n */\\n function setText(bytes32 node, string calldata key, string calldata value) external;\\n\\n /**\\n * Returns the text data associated with an INS node and key.\\n * @param node The INS node to query.\\n * @param key The text data key to query.\\n * @return The associated text data.\\n */\\n function text(bytes32 node, string calldata key) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x05ce1760d3a16d99614b1a46c11308238e1ecd8be23f081fac146bbc58961ecf\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/transfers/RONTransferHelper.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Strings } from \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\n\\n/**\\n * @title RONTransferHelper\\n */\\nlibrary RONTransferHelper {\\n using Strings for *;\\n\\n /**\\n * @dev Transfers RON and wraps result for the method caller to a recipient.\\n */\\n function safeTransfer(address payable _to, uint256 _value) internal {\\n bool _success = send(_to, _value);\\n if (!_success) {\\n revert(\\n string.concat(\\\"TransferHelper: could not transfer RON to \\\", _to.toHexString(), \\\" value \\\", _value.toHexString())\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns whether the call was success.\\n * Note: this function should use with the `ReentrancyGuard`.\\n */\\n function send(address payable _to, uint256 _value) internal returns (bool _success) {\\n (_success,) = _to.call{ value: _value }(new bytes(0));\\n }\\n}\\n\",\"keccak256\":\"0x733e60374ee0a33d0da2ee24976b893ca6b6d9764243b175e1ac8025240394da\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 194467, "storageLayout": { "storage": [ { - "astId": 49882, + "astId": 60522, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_paused", "offset": 0, @@ -16042,7 +1504,7 @@ "type": "t_bool" }, { - "astId": 49702, + "astId": 60342, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_initialized", "offset": 1, @@ -16050,7 +1512,7 @@ "type": "t_uint8" }, { - "astId": 49705, + "astId": 60345, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_initializing", "offset": 2, @@ -16058,7 +1520,7 @@ "type": "t_bool" }, { - "astId": 49983, + "astId": 60623, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_status", "offset": 0, @@ -16066,23 +1528,23 @@ "type": "t_uint256" }, { - "astId": 48175, + "astId": 58815, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_roles", "offset": 0, "slot": "2", - "type": "t_mapping(t_bytes32,t_struct(RoleData)48170_storage)" + "type": "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)" }, { - "astId": 48485, + "astId": 59125, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_roleMembers", "offset": 0, "slot": "3", - "type": "t_mapping(t_bytes32,t_struct(AddressSet)54054_storage)" + "type": "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)" }, { - "astId": 62816, + "astId": 83016, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "____gap", "offset": 0, @@ -16090,7 +1552,7 @@ "type": "t_array(t_uint256)50_storage" }, { - "astId": 62819, + "astId": 83019, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_minCommitmentAge", "offset": 0, @@ -16098,7 +1560,7 @@ "type": "t_uint256" }, { - "astId": 62822, + "astId": 83022, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_maxCommitmentAge", "offset": 0, @@ -16106,7 +1568,7 @@ "type": "t_uint256" }, { - "astId": 62825, + "astId": 83025, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_minRegistrationDuration", "offset": 0, @@ -16114,7 +1576,7 @@ "type": "t_uint256" }, { - "astId": 62828, + "astId": 83028, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_treasury", "offset": 0, @@ -16122,39 +1584,39 @@ "type": "t_address_payable" }, { - "astId": 62832, + "astId": 83032, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_rnsUnified", "offset": 0, "slot": "58", - "type": "t_contract(INSUnified)64975" + "type": "t_contract(INSUnified)85351" }, { - "astId": 62836, + "astId": 83036, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_nameChecker", "offset": 0, "slot": "59", - "type": "t_contract(INameChecker)65094" + "type": "t_contract(INameChecker)85470" }, { - "astId": 62840, + "astId": 83040, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_priceOracle", "offset": 0, "slot": "60", - "type": "t_contract(INSDomainPrice)64599" + "type": "t_contract(INSDomainPrice)84975" }, { - "astId": 62844, + "astId": 83044, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_reverseRegistrar", "offset": 0, "slot": "61", - "type": "t_contract(INSReverseRegistrar)64718" + "type": "t_contract(INSReverseRegistrar)85094" }, { - "astId": 62849, + "astId": 83049, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_committedAt", "offset": 0, @@ -16162,7 +1624,7 @@ "type": "t_mapping(t_bytes32,t_uint256)" }, { - "astId": 62856, + "astId": 83056, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_protectedNamesWhitelisted", "offset": 0, @@ -16203,22 +1665,22 @@ "label": "bytes32", "numberOfBytes": "32" }, - "t_contract(INSDomainPrice)64599": { + "t_contract(INSDomainPrice)84975": { "encoding": "inplace", "label": "contract INSDomainPrice", "numberOfBytes": "20" }, - "t_contract(INSReverseRegistrar)64718": { + "t_contract(INSReverseRegistrar)85094": { "encoding": "inplace", "label": "contract INSReverseRegistrar", "numberOfBytes": "20" }, - "t_contract(INSUnified)64975": { + "t_contract(INSUnified)85351": { "encoding": "inplace", "label": "contract INSUnified", "numberOfBytes": "20" }, - "t_contract(INameChecker)65094": { + "t_contract(INameChecker)85470": { "encoding": "inplace", "label": "contract INameChecker", "numberOfBytes": "20" @@ -16230,19 +1692,19 @@ "numberOfBytes": "32", "value": "t_bool" }, - "t_mapping(t_bytes32,t_struct(AddressSet)54054_storage)": { + "t_mapping(t_bytes32,t_struct(AddressSet)64694_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct EnumerableSet.AddressSet)", "numberOfBytes": "32", - "value": "t_struct(AddressSet)54054_storage" + "value": "t_struct(AddressSet)64694_storage" }, - "t_mapping(t_bytes32,t_struct(RoleData)48170_storage)": { + "t_mapping(t_bytes32,t_struct(RoleData)58810_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct AccessControl.RoleData)", "numberOfBytes": "32", - "value": "t_struct(RoleData)48170_storage" + "value": "t_struct(RoleData)58810_storage" }, "t_mapping(t_bytes32,t_uint256)": { "encoding": "mapping", @@ -16258,28 +1720,28 @@ "numberOfBytes": "32", "value": "t_mapping(t_address,t_bool)" }, - "t_struct(AddressSet)54054_storage": { + "t_struct(AddressSet)64694_storage": { "encoding": "inplace", "label": "struct EnumerableSet.AddressSet", "numberOfBytes": "64", "members": [ { - "astId": 54053, + "astId": 64693, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_inner", "offset": 0, "slot": "0", - "type": "t_struct(Set)53739_storage" + "type": "t_struct(Set)64379_storage" } ] }, - "t_struct(RoleData)48170_storage": { + "t_struct(RoleData)58810_storage": { "encoding": "inplace", "label": "struct AccessControl.RoleData", "numberOfBytes": "64", "members": [ { - "astId": 48167, + "astId": 58807, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "members", "offset": 0, @@ -16287,7 +1749,7 @@ "type": "t_mapping(t_address,t_bool)" }, { - "astId": 48169, + "astId": 58809, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "adminRole", "offset": 0, @@ -16296,13 +1758,13 @@ } ] }, - "t_struct(Set)53739_storage": { + "t_struct(Set)64379_storage": { "encoding": "inplace", "label": "struct EnumerableSet.Set", "numberOfBytes": "64", "members": [ { - "astId": 53734, + "astId": 64374, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_values", "offset": 0, @@ -16310,7 +1772,7 @@ "type": "t_array(t_bytes32)dyn_storage" }, { - "astId": 53738, + "astId": 64378, "contract": "src/RONRegistrarController.sol:RONRegistrarController", "label": "_indexes", "offset": 0, @@ -16331,7 +1793,7 @@ } } }, - "timestamp": 1698144132, + "timestamp": 1719309904, "userdoc": { "version": 1, "kind": "user", diff --git a/foundry.toml b/foundry.toml index c7bbca5a..525a604c 100644 --- a/foundry.toml +++ b/foundry.toml @@ -27,4 +27,9 @@ localhost = "http://localhost:8545" runs = 256 [invariant] -runs = 256 \ No newline at end of file +runs = 256 + +[dependencies] +"@fdk" = { version = "0.3.0-beta", url = "https://github.com/axieinfinity/foundry-deployment-kit/archive/refs/tags/v0.3.0-beta.zip" } +"@pythnetwork-pyth-sdk-solidity" = { version = "2.2.0" } +"@openzeppelin-contracts" = { version = "4.9.3" } diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..dbb30101 --- /dev/null +++ b/install.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Check if foundry is installed +if ! command -v $HOME/.foundry/bin/forge &>/dev/null; then + # Install foundryup + curl -L https://foundry.paradigm.xyz | bash + # Install foundry + $HOME/.foundry/bin/foundryup -v nightly-de33b6af53005037b463318d2628b5cfcaf39916 # Stable version +fi + +# Check if rustup is installed +if ! command -v rustup &>/dev/null; then + # Install rustup + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +fi + +# Update rustup +$HOME/.cargo/bin/rustup update stable +# Install soldeer +$HOME/.cargo/bin/cargo install soldeer +# Update dependencies with soldeer +$HOME/.cargo/bin/soldeer update +# Run forge build +$HOME/.foundry/bin/forge build + +# Check if rustup is installed +if ! command -v jq &>/dev/null; then + # Install jq + brew install jq +fi diff --git a/lib/contract-libs b/lib/contract-libs deleted file mode 160000 index f177e3b4..00000000 --- a/lib/contract-libs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f177e3b4a498ec15ca1ca58d1a514f8b54c3f95a diff --git a/lib/forge-std b/lib/forge-std deleted file mode 160000 index 77876f8a..00000000 --- a/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 77876f8a5b44b770a935621bb331660c90ac928e diff --git a/lib/foundry-deployment-kit b/lib/foundry-deployment-kit deleted file mode 160000 index d363121b..00000000 --- a/lib/foundry-deployment-kit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d363121bac338212c1540c53ddd9296c4cf2cf19 diff --git a/lib/openzeppelin-contracts b/lib/openzeppelin-contracts deleted file mode 160000 index fd81a96f..00000000 --- a/lib/openzeppelin-contracts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fd81a96f01cc42ef1c9a5399364968d0e07e9e90 diff --git a/lib/pyth-sdk-solidity b/lib/pyth-sdk-solidity deleted file mode 160000 index 11d6bcfc..00000000 --- a/lib/pyth-sdk-solidity +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 11d6bcfc2e56885535a9a8e3c8417847cb20be14 diff --git a/lib/solady b/lib/solady deleted file mode 160000 index 2ba1cc1e..00000000 --- a/lib/solady +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2ba1cc1eaa3bffd5c093d94f76ef1b87b167ff3c diff --git a/remappings.txt b/remappings.txt index e0444d22..3bc9792b 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,10 +1,10 @@ @rns-contracts/=src/ ds-test/=lib/forge-std/lib/ds-test/src/ -forge-std/=lib/forge-std/src/ -@openzeppelin/=lib/openzeppelin-contracts/ +forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/ +@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/ contract-template/=lib/contract-template/src/ -solady/=lib/solady/src/ +@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/ @ensdomains/ens-contracts/=lib/ens-contracts/contracts/ @ensdomains/buffer/=lib/buffer/ -@pythnetwork/=lib/pyth-sdk-solidity/ -foundry-deployment-kit/=lib/foundry-deployment-kit/script/ \ No newline at end of file +@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/ +@fdk/=dependencies/@fdk-0.3.0-beta/script \ No newline at end of file diff --git a/run.sh b/run.sh index 931b150b..d99f730e 100755 --- a/run.sh +++ b/run.sh @@ -1 +1 @@ -source lib/foundry-deployment-kit/run.sh \ No newline at end of file +source dependencies/@fdk-0.3.0-beta/run.sh diff --git a/script/20231015-deploy/20231015_Deploy.s.sol b/script/20231015-deploy/20231015_Deploy.s.sol index 5bbc1067..9f72803f 100644 --- a/script/20231015-deploy/20231015_Deploy.s.sol +++ b/script/20231015-deploy/20231015_Deploy.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { StdStyle } from "forge-std/StdStyle.sol"; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; @@ -109,7 +109,7 @@ contract Migration__20231015_Deploy is Migration { console.log(unicode"✅ Controller checks are passed"); } - function _validateRNSUnified(uint256 ronId, uint256 addrReverseId) internal logFn("validateRNSUnified") { + function _validateRNSUnified(uint256 ronId, uint256 addrReverseId) internal view logFn("validateRNSUnified") { assertEq(ronId, LibRNSDomain.RON_ID); assertEq(addrReverseId, LibRNSDomain.ADDR_REVERSE_ID); assertTrue(_rns.hasRole(_rns.CONTROLLER_ROLE(), address(_auction)), "grant controller role failed"); @@ -119,7 +119,7 @@ contract Migration__20231015_Deploy is Migration { console.log(unicode"✅ RNSUnified checks are passed"); } - function _validateReverseRegistrar() internal logFn("validateReverseRegistrar") { + function _validateReverseRegistrar() internal view logFn("validateReverseRegistrar") { assertEq(_rns.getApproved(LibRNSDomain.ADDR_REVERSE_ID), address(_reverseRegistrar)); } @@ -202,7 +202,7 @@ contract Migration__20231015_Deploy is Migration { console.log(unicode"✅ Domain price checks are passed"); } - function _validateNameChecker() internal logFn("validateNameChecker") { + function _validateNameChecker() internal view logFn("validateNameChecker") { string[] memory blacklistedWords = _blacklistedWords; (uint8 min, uint8 max) = _nameChecker.getWordRange(); bool valid; diff --git a/script/20231024-upgrade-domain-price/20231024_Config.s.sol b/script/20231024-upgrade-domain-price/20231024_Config.s.sol index 0b602d51..6c77ea26 100644 --- a/script/20231024-upgrade-domain-price/20231024_Config.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_Config.s.sol @@ -9,7 +9,7 @@ abstract contract Config__20231024 is Migration { ISharedArgument.SharedParameter memory param = abi.decode(rawArgs, (ISharedArgument.SharedParameter)); - if (network() == DefaultNetwork.RoninTestnet.key()) { + if (network() == DefaultNetwork.RoninTestnet.key() || network() == DefaultNetwork.LocalHost.key()) { param.rnsDomainPrice.overrider = param.rnsDomainPrice.domainPriceOperators[0]; } else if (network() == DefaultNetwork.RoninMainnet.key()) { revert("Missing param"); diff --git a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol index 42ff6657..8629cfa9 100644 --- a/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol +++ b/script/20231024-upgrade-domain-price/20231024_UpgradeDomainPrice.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Contract } from "script/utils/Contract.sol"; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; import { ISharedArgument, Config__20231024 } from "./20231024_Config.s.sol"; diff --git a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol index 69dabe09..f62557b0 100644 --- a/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol +++ b/script/20231106-config-prelaunch/20231106_SubmitReservedNames.s.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Contract } from "script/utils/Contract.sol"; -import { JSONParserLib } from "solady/utils/JSONParserLib.sol"; +import { JSONParserLib } from "@solady/utils/JSONParserLib.sol"; import { Migration } from "script/Migration.s.sol"; import { LibRNSDomain, RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { OwnedMulticaller, OwnedMulticallerDeploy } from "script/contracts/OwnedMulticallerDeploy.s.sol"; diff --git a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol index 8842cc9d..cdd7d01a 100644 --- a/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol +++ b/script/20231106-config-prelaunch/20231106_TransferOwnership.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.19; import { Contract } from "script/utils/Contract.sol"; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { OwnedMulticallerDeploy } from "script/contracts/OwnedMulticallerDeploy.s.sol"; diff --git a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol index 2a7ed7c9..9580dfbb 100644 --- a/script/20231106-deploy-mainnet/20231106_Deploy.s.sol +++ b/script/20231106-deploy-mainnet/20231106_Deploy.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { StdStyle } from "forge-std/StdStyle.sol"; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; diff --git a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol index fd86c0d8..20bdc683 100644 --- a/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol +++ b/script/20231114-deploy-name-checker-logic/20231114_DeployNameCheckerLogic.s.sol @@ -6,7 +6,7 @@ import { ITransparentUpgradeableProxy, TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -import { LibProxy } from "foundry-deployment-kit/libraries/LibProxy.sol"; +import { LibProxy } from "@fdk/libraries/LibProxy.sol"; import { NameChecker } from "@rns-contracts/NameChecker.sol"; import { Contract } from "script/utils/Contract.sol"; import { Migration } from "script/Migration.s.sol"; diff --git a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol index e5f5465c..b71ffd06 100644 --- a/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol +++ b/script/20231115-migrate-invalid-auction-names/2021115_MigrateInvalidAuctionNames.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { INSAuction, EventRange, RNSAuction } from "@rns-contracts/RNSAuction.sol"; import { Contract } from "script/utils/Contract.sol"; import { Migration } from "script/Migration.s.sol"; diff --git a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol index 5589d3bf..79b5daac 100644 --- a/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol +++ b/script/20231123-upgrade-auction-claim-unbidded-names/20231123_UpgradeAuctionClaimUnbiddedNames.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Contract } from "script/utils/Contract.sol"; import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; diff --git a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol index 7f8bce69..e2f5641b 100644 --- a/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol +++ b/script/20231124-deploy-rns-operation/20231124_DeployRNSOperation.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.19; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Contract } from "script/utils/Contract.sol"; import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; diff --git a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol index e057f5a6..88feaa59 100644 --- a/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol +++ b/script/20231205-deploy-upgrade-auction-and-deploy-rns-operation/20231205_UpgradeRNSAuctionAndDeployRNSOperation.s.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { ITransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import { ProxyAdmin } from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; import { Contract } from "script/utils/Contract.sol"; -import { DefaultContract } from "foundry-deployment-kit/utils/DefaultContract.sol"; +import { DefaultContract } from "@fdk/utils/DefaultContract.sol"; import { ISharedArgument } from "script/interfaces/ISharedArgument.sol"; import { DefaultNetwork, diff --git a/script/20240215-separate-tier-and-domain-price/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol b/script/20240215-separate-tier-and-domain-price/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol index a77032ce..942bbcce 100644 --- a/script/20240215-separate-tier-and-domain-price/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol +++ b/script/20240215-separate-tier-and-domain-price/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.19; import { StdStyle } from "forge-std/StdStyle.sol"; import { IMulticall3 } from "forge-std/interfaces/IMulticall3.sol"; -import { LibString } from "solady/utils/LibString.sol"; -import { DefaultNetwork } from "foundry-deployment-kit/utils/DefaultNetwork.sol"; -import { DefaultContract } from "foundry-deployment-kit/utils/DefaultContract.sol"; +import { LibString } from "@solady/utils/LibString.sol"; +import { DefaultNetwork } from "@fdk/utils/DefaultNetwork.sol"; +import { DefaultContract } from "@fdk/utils/DefaultContract.sol"; import { Contract } from "../utils/Contract.sol"; import { INSDomainPrice, RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; import "./20240215_Migration.s.sol"; @@ -58,7 +58,7 @@ contract Migration__01_UpgradeRNSDomainPriceAndOverrideTierForCommunityNames_RNS _validateOtherDomainTiers(); } - function _validateOtherDomainTiers() internal logFn("_validating other domain tiers ...") { + function _validateOtherDomainTiers() internal view logFn("_validating other domain tiers ...") { if (network() == DefaultNetwork.RoninMainnet.key()) { assertEq(uint8(_domainPrice.getTier("tudo")), uint8(INSDomainPrice.Tier.Tier2), "invalid tier for tudo"); assertEq(uint8(_domainPrice.getTier("duke")), uint8(INSDomainPrice.Tier.Tier2), "invalid tier for duke"); diff --git a/script/20240215-separate-tier-and-domain-price/03_DeployNewRNSOperation_RNSOperation.s.sol b/script/20240215-separate-tier-and-domain-price/03_DeployNewRNSOperation_RNSOperation.s.sol index abd1327d..df25964a 100644 --- a/script/20240215-separate-tier-and-domain-price/03_DeployNewRNSOperation_RNSOperation.s.sol +++ b/script/20240215-separate-tier-and-domain-price/03_DeployNewRNSOperation_RNSOperation.s.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.19; import { StdStyle } from "forge-std/StdStyle.sol"; import { Math } from "@openzeppelin/contracts/utils/math/Math.sol"; -import { console2 as console } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { Contract } from "script/utils/Contract.sol"; import { Migration } from "script/Migration.s.sol"; import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; diff --git a/script/20240215-separate-tier-and-domain-price/20240215_Migration.s.sol b/script/20240215-separate-tier-and-domain-price/20240215_Migration.s.sol index 3aba2723..a7428a91 100644 --- a/script/20240215-separate-tier-and-domain-price/20240215_Migration.s.sol +++ b/script/20240215-separate-tier-and-domain-price/20240215_Migration.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 as console } from "forge-std/console2.sol"; -import { JSONParserLib } from "solady/utils/JSONParserLib.sol"; +import { console } from "forge-std/console.sol"; +import { JSONParserLib } from "@solady/utils/JSONParserLib.sol"; import { Migration, ISharedArgument } from "../Migration.s.sol"; import { LibRNSDomain } from "@rns-contracts/libraries/LibRNSDomain.sol"; import { INSDomainPrice } from "@rns-contracts/interfaces/INSDomainPrice.sol"; diff --git a/script/20242406-migrate-auction-controller-treasury-and-deploy-rns-commission/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol b/script/20242406-migrate-auction-controller-treasury-and-deploy-rns-commission/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol new file mode 100644 index 00000000..353508c4 --- /dev/null +++ b/script/20242406-migrate-auction-controller-treasury-and-deploy-rns-commission/20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission.s.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { RNSAuction, RNSAuctionDeploy } from "script/contracts/RNSAuctionDeploy.s.sol"; +import { + RONRegistrarController, RONRegistrarControllerDeploy +} from "script/contracts/RONRegistrarControllerDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { RNSCommission, RNSCommissionDeploy } from "script/contracts/RNSCommissionDeploy.s.sol"; +import { Migration } from "script/Migration.s.sol"; + +contract Migration__20240624_MigrateAuctionAndControllerTreasuryAndDeployRNSCommission is Migration { + RNSAuction private _auction; + RONRegistrarController private _controller; + RNSCommission private _rnsCommission; + address private _defaultAdmin; + + function run() public { + _auction = RNSAuction(loadContract(Contract.RNSAuction.key())); + _controller = RONRegistrarController(_upgradeProxy(Contract.RONRegistrarController.key())); + + _rnsCommission = new RNSCommissionDeploy().run(); + _defaultAdmin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; + + vm.startBroadcast(_defaultAdmin); + + _controller.setTreasury(payable(address(_rnsCommission))); + _auction.setTreasury(payable(address(_rnsCommission))); + + vm.stopBroadcast(); + } + + function _postCheck() internal override { + _validateSendMoneyFromSenders(); + _validateTreasuryAddress(); + _validateCommissionInfo(); + } + + function _validateTreasuryAddress() internal logFn("_validateTreasuryAddress") { + address auctionTreasury = _auction.getTreasury(); + address controllerTreasury = _controller.getTreasury(); + + assertEq(auctionTreasury, payable(address(_rnsCommission))); + assertEq(controllerTreasury, payable(address(_rnsCommission))); + } + + function _validateCommissionInfo() internal logFn("_validateSetCommissionInfo") { + RNSCommission.Commission[] memory newCommission = new RNSCommission.Commission[](1); + newCommission[0].recipient = payable(makeAddr("Random")); + newCommission[0].ratio = 100_00; + newCommission[0].name = "Random"; + + vm.prank(_defaultAdmin); + _rnsCommission.setCommissions(newCommission); + + assertEq(_rnsCommission.getCommissions().length, 1); + assertEq(_rnsCommission.getCommissions()[0].recipient, newCommission[0].recipient); + } + + function _validateSendMoneyFromSenders() internal logFn("_validateSendMoneyFailFromSenders") { + vm.prank(address(_auction)); + address(_rnsCommission).call{ value: 100 ether }(""); + + vm.prank(address(_controller)); + address(_rnsCommission).call{ value: 100 ether }(""); + + assertEq(address(_rnsCommission).balance, 0 ether); + + vm.prank(_defaultAdmin); + address(_rnsCommission).call{ value: 100 ether }(""); + + assertEq(address(_rnsCommission).balance, 100 ether); + } +} diff --git a/script/GeneralConfig.sol b/script/GeneralConfig.sol index 7a1209b0..d5f0870c 100644 --- a/script/GeneralConfig.sol +++ b/script/GeneralConfig.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { BaseGeneralConfig } from "foundry-deployment-kit/BaseGeneralConfig.sol"; +import { BaseGeneralConfig } from "@fdk/BaseGeneralConfig.sol"; import { Contract } from "./utils/Contract.sol"; contract GeneralConfig is BaseGeneralConfig { @@ -17,6 +17,7 @@ contract GeneralConfig is BaseGeneralConfig { _mapContractName(Contract.OwnedMulticaller); _mapContractName(Contract.RNSReverseRegistrar); _mapContractName(Contract.RONRegistrarController); + _mapContractName(Contract.RNSCommission); } function _mapContractName(Contract contractEnum) internal { diff --git a/script/Migration.s.sol b/script/Migration.s.sol index 31e0bbb3..e4c73c36 100644 --- a/script/Migration.s.sol +++ b/script/Migration.s.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { BaseMigration } from "foundry-deployment-kit/BaseMigration.s.sol"; -import { DefaultNetwork } from "foundry-deployment-kit/utils/DefaultNetwork.sol"; +import { BaseMigration } from "@fdk/BaseMigration.s.sol"; +import { DefaultNetwork } from "@fdk/utils/DefaultNetwork.sol"; import { GeneralConfig } from "./GeneralConfig.sol"; import "./interfaces/ISharedArgument.sol"; @@ -16,7 +16,7 @@ abstract contract Migration is BaseMigration { function _sharedArguments() internal view virtual override returns (bytes memory rawArgs) { ISharedArgument.SharedParameter memory param; - if (network() == DefaultNetwork.RoninTestnet.key()) { + if (network() == DefaultNetwork.RoninTestnet.key() || network() == DefaultNetwork.LocalHost.key()) { address defaultAdmin = 0x968D0Cd7343f711216817E617d3f92a23dC91c07; address defaultPauser = defaultAdmin; address defaultOperator = defaultAdmin; @@ -71,6 +71,22 @@ abstract contract Migration is BaseMigration { param.rnsUnified.protectedSettler = defaultAdmin; param.rnsUnified.gracePeriod = 90 days; param.rnsUnified.baseTokenURI = "https://metadata-rns.skymavis.one/saigon/"; + + // RNSCommission + param.rnsCommission.admin = defaultAdmin; + param.rnsCommission.commissionSetters = new address[](1); + param.rnsCommission.commissionSetters[0] = defaultAdmin; + + param.rnsCommission.allowedSenders = new address[](2); + + param.rnsCommission.treasuryCommission = new INSCommission.Commission[](2); + param.rnsCommission.treasuryCommission[0].recipient = payable(defaultAdmin); + param.rnsCommission.treasuryCommission[0].ratio = 70_00; + param.rnsCommission.treasuryCommission[0].name = "Sky Mavis"; + + param.rnsCommission.treasuryCommission[1].recipient = payable(defaultAdmin); + param.rnsCommission.treasuryCommission[1].ratio = 30_00; + param.rnsCommission.treasuryCommission[1].name = "Ronin"; } else if (network() == DefaultNetwork.RoninMainnet.key()) { address duke = 0x0F68eDBE14C8f68481771016d7E2871d6a35DE11; address andy = 0xEd4A9F48a62Fb6FdcfB45Bb00C9f61D1A436E58C; diff --git a/script/contracts/RNSCommissionDeploy.s.sol b/script/contracts/RNSCommissionDeploy.s.sol new file mode 100644 index 00000000..b844723f --- /dev/null +++ b/script/contracts/RNSCommissionDeploy.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { RNSCommission } from "@rns-contracts/RNSCommission.sol"; +import { ISharedArgument, Migration } from "script/Migration.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { RONRegistrarController, RONRegistrarControllerDeploy } from "./RONRegistrarControllerDeploy.s.sol"; +import { Contract } from "script/utils/Contract.sol"; +import { RNSAuction, RNSAuctionDeploy } from "./RNSAuctionDeploy.s.sol"; + +contract RNSCommissionDeploy is Migration { + function _defaultArguments() internal virtual override returns (bytes memory args) { + ISharedArgument.RNSCommissionParam memory param = config.sharedArguments().rnsCommission; + address[] memory allowedSenders; + allowedSenders = new address[](2); + allowedSenders[0] = param.allowedSenders[0] == address(0) + ? address(RNSAuction(loadContract(Contract.RNSAuction.key()))) + : param.allowedSenders[0]; + allowedSenders[1] = param.allowedSenders[1] == address(0) + ? address(RONRegistrarController(loadContract(Contract.RONRegistrarController.key()))) + : param.allowedSenders[1]; + + args = abi.encodeCall(RNSCommission.initialize, (param.admin, param.treasuryCommission, allowedSenders)); + } + + function run() public virtual returns (RNSCommission) { + return RNSCommission(_deployProxy(Contract.RNSCommission.key())); + } +} diff --git a/script/interfaces/ISharedArgument.sol b/script/interfaces/ISharedArgument.sol index 39afa945..535b588c 100644 --- a/script/interfaces/ISharedArgument.sol +++ b/script/interfaces/ISharedArgument.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { IGeneralConfig } from "foundry-deployment-kit/interfaces/IGeneralConfig.sol"; +import { IGeneralConfig } from "@fdk/interfaces/IGeneralConfig.sol"; import { IPyth, INSDomainPrice, PeriodScaler } from "@rns-contracts/RNSDomainPrice.sol"; import { NameChecker } from "@rns-contracts/NameChecker.sol"; import { PublicResolver } from "@rns-contracts/resolvers/PublicResolver.sol"; @@ -11,6 +11,7 @@ import { RNSUnified } from "@rns-contracts/RNSUnified.sol"; import { RNSDomainPrice } from "@rns-contracts/RNSDomainPrice.sol"; import { RNSOperation } from "@rns-contracts/utils/RNSOperation.sol"; import { OwnedMulticaller } from "@rns-contracts/utils/OwnedMulticaller.sol"; +import { RNSCommission, INSCommission } from "@rns-contracts/RNSCommission.sol"; interface ISharedArgument is IGeneralConfig { struct NameCheckerParam { @@ -86,6 +87,13 @@ interface ISharedArgument is IGeneralConfig { RNSReverseRegistrar rnsReverseRegistrar; } + struct RNSCommissionParam { + address admin; + address[] commissionSetters; + INSCommission.Commission[] treasuryCommission; + address[] allowedSenders; + } + struct SharedParameter { NameCheckerParam nameChecker; OwnedMulticallerParam ownedMulticaller; @@ -96,6 +104,7 @@ interface ISharedArgument is IGeneralConfig { RNSReverseRegistrarParam rnsReverseRegistrar; RNSUnifiedParam rnsUnified; RONRegistrarControllerParam ronRegistrarController; + RNSCommissionParam rnsCommission; } function sharedArguments() external view returns (SharedParameter memory param); diff --git a/script/utils/Contract.sol b/script/utils/Contract.sol index 05f9fd0c..15042b5d 100644 --- a/script/utils/Contract.sol +++ b/script/utils/Contract.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { LibString } from "lib/solady/src/utils/LibString.sol"; -import { TContract } from "foundry-deployment-kit/types/Types.sol"; +import { LibString } from "@solady/utils/LibString.sol"; +import { TContract } from "@fdk/types/Types.sol"; enum Contract { RNSUnified, @@ -13,7 +13,8 @@ enum Contract { PublicResolver, OwnedMulticaller, RNSReverseRegistrar, - RONRegistrarController + RONRegistrarController, + RNSCommission } using { key, name } for Contract global; @@ -32,5 +33,6 @@ function name(Contract contractEnum) pure returns (string memory) { if (contractEnum == Contract.OwnedMulticaller) return "OwnedMulticaller"; if (contractEnum == Contract.RNSReverseRegistrar) return "RNSReverseRegistrar"; if (contractEnum == Contract.RONRegistrarController) return "RONRegistrarController"; + if (contractEnum == Contract.RNSCommission) return "RNSCommission"; revert("Contract: Unknown contract"); } diff --git a/soldeer.lock b/soldeer.lock new file mode 100644 index 00000000..026df440 --- /dev/null +++ b/soldeer.lock @@ -0,0 +1,17 @@ +[[dependencies]] +name = "@fdk" +version = "0.3.0-beta" +source = "https://github.com/axieinfinity/foundry-deployment-kit/archive/refs/tags/v0.3.0-beta.zip" +checksum = "aabeda6cc1fe02227d26f3edd86d4af6c91e2167e8b9f1971cc1ea7ce33d34f9" + +[[dependencies]] +name = "@pythnetwork-pyth-sdk-solidity" +version = "2.2.0" +source = "https://soldeer-revisions.s3.amazonaws.com/@pythnetwork-pyth-sdk-solidity/2_2_0_15-04-2024_18:50:54_pyth-sdk-solidity.zip" +checksum = "54e3bda3b27467f84c1605722f58e1d2b5a19d6ca3c24840550f1d6cf3bc2231" + +[[dependencies]] +name = "@openzeppelin-contracts" +version = "4.9.3" +source = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/4_9_3_22-01-2024_13:13:53_contracts.zip" +checksum = "95886307069cf73310b41396c49df51801a73f31f18f62e7d05adfc2031e7725" diff --git a/src/RNSCommission.sol b/src/RNSCommission.sol new file mode 100644 index 00000000..3e1174fe --- /dev/null +++ b/src/RNSCommission.sol @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol"; +import { AccessControlEnumerable } from "@openzeppelin/contracts/access/AccessControlEnumerable.sol"; +import { INSCommission } from "./interfaces/INSCommission.sol"; +import { RONTransferHelper } from "./libraries/transfers/RONTransferHelper.sol"; + +contract RNSCommission is Initializable, AccessControlEnumerable, INSCommission { + /// @dev Constant representing the maximum percentage value (100%). + uint256 public constant MAX_PERCENTAGE = 100_00; + /// @dev Role for accounts that can send RON for this contract. + bytes32 public constant SENDER_ROLE = keccak256("SENDER_ROLE"); + + /// @dev Gap for upgradeability. + uint256[50] private ____gap; + /// @dev Array of `Commission` structs that store commissions information. + Commission[] internal _commissionInfos; + + constructor() { + _disableInitializers(); + } + + receive() external payable { + _fallback(); + } + + function initialize(address admin, Commission[] calldata commissionInfos, address[] calldata allowedSenders) + external + initializer + { + _setupRole(DEFAULT_ADMIN_ROLE, admin); + + uint256 length = allowedSenders.length; + for (uint256 i; i < length; ++i) { + _setupRole(SENDER_ROLE, allowedSenders[i]); + } + + _setCommissions(commissionInfos); + } + + /// @inheritdoc INSCommission + function getCommissions() external view returns (Commission[] memory commissionInfos) { + return _commissionInfos; + } + + /// @inheritdoc INSCommission + function setCommissions(Commission[] calldata commissionInfos) external onlyRole(DEFAULT_ADMIN_ROLE) { + _setCommissions(commissionInfos); + } + + /// @inheritdoc INSCommission + function setCommissionInfo(uint256 commissionIdx, address payable newRecipient, string calldata newName) + external + onlyRole(DEFAULT_ADMIN_ROLE) + { + if (commissionIdx >= _commissionInfos.length) revert InvalidArrayLength(); + // TODO: should fix to not duplicate logic in set commision info + if (newRecipient == address(0)) revert NullAddress(); + + _commissionInfos[commissionIdx].recipient = newRecipient; + _commissionInfos[commissionIdx].name = newName; + emit CommissionInfoUpdated(msg.sender, commissionIdx, newRecipient, newName); + } + + /** + * @dev Helper method to allocate commission and take fee into recipient address. + */ + function _allocateCommissionAndTransferToRecipient(uint256 ronAmount) internal { + if (ronAmount == 0) revert InvalidAmountOfRON(); + + uint256 length = _commissionInfos.length; + if (length == 0) revert InvalidArrayLength(); + + uint256 lastIdx = length - 1; + uint256 sumValue; + + for (uint256 i; i < lastIdx; ++i) { + uint256 commissionAmount = _computePercentage(ronAmount, _commissionInfos[i].ratio); + sumValue += commissionAmount; + + RONTransferHelper.safeTransfer(_commissionInfos[i].recipient, commissionAmount); + emit Distributed(_commissionInfos[i].recipient, commissionAmount); + } + + // This code send the remaining RON to the last recipient. + if (sumValue < ronAmount) { + RONTransferHelper.safeTransfer(_commissionInfos[lastIdx].recipient, ronAmount - sumValue); + emit Distributed(_commissionInfos[lastIdx].recipient, ronAmount - sumValue); + } + } + + function _setCommissions(Commission[] calldata commissionInfos) internal { + uint256 length = commissionInfos.length; + // commissionInfos[] can not be empty + if (length == 0) revert InvalidArrayLength(); + + delete _commissionInfos; + + uint256 sum; + + for (uint256 i; i < length; ++i) { + if (commissionInfos[i].recipient == address(0)) revert NullAddress(); + + sum += commissionInfos[i].ratio; + _commissionInfos.push(commissionInfos[i]); + } + + if (sum != MAX_PERCENTAGE) revert InvalidRatio(); + + emit CommissionsUpdated(msg.sender, commissionInfos); + } + + // Calculate amount of money based on commission's ratio + function _computePercentage(uint256 value, uint256 percentage) internal pure virtual returns (uint256) { + return (value * percentage) / MAX_PERCENTAGE; + } + + function _fallback() internal { + if (hasRole(SENDER_ROLE, msg.sender)) { + _allocateCommissionAndTransferToRecipient(msg.value); + } + } +} diff --git a/src/RONRegistrarController.sol b/src/RONRegistrarController.sol index 8f982469..9bb061c1 100644 --- a/src/RONRegistrarController.sol +++ b/src/RONRegistrarController.sol @@ -92,8 +92,8 @@ contract RONRegistrarController is _setPriceOracle(priceOracle); _setMinRegistrationDuration(minRegistrationDuration); _setCommitmentAge(minCommitmentAge, maxCommitmentAge); + _setTreasury(treasury); - _treasury = treasury; _rnsUnified = rnsUnified; _nameChecker = nameChecker; _reverseRegistrar = reverseRegistrar; @@ -281,7 +281,7 @@ contract RONRegistrarController is * @inheritdoc IRONRegistrarController */ function setTreasury(address payable addr) external onlyRole(DEFAULT_ADMIN_ROLE) { - _treasury = addr; + _setTreasury(addr); } /** @@ -452,6 +452,19 @@ contract RONRegistrarController is emit DomainPriceUpdated(_msgSender(), priceOracle); } + /** + * @dev Helper method to update treasury address. + * + * Emits an event {TreasuryUpdated}. + */ + function _setTreasury(address payable addr) internal { + if (addr == address(0x0)) revert NullAddress(); + + _treasury = addr; + + emit TreasuryUpdated(addr); + } + /** * @dev Helper method to check if a domain name is available for register. */ diff --git a/src/interfaces/INSCommission.sol b/src/interfaces/INSCommission.sol new file mode 100644 index 00000000..f13db5c8 --- /dev/null +++ b/src/interfaces/INSCommission.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +interface INSCommission { + struct Commission { + address payable recipient; + uint256 ratio; // Values [0; 100_00] reflexes [0; 100%] + string name; // Commission's name + } + + /// @dev Emitted when all the commission info is updated. + event CommissionsUpdated(address indexed updatedBy, Commission[] commissionInfos); + /// @dev Emitted when specific commission info is updated. + event CommissionInfoUpdated( + address indexed updatedBy, uint256 indexed commissionIdx, address payable newRecipient, string newName + ); + /// @dev Emitted when transfer RON to commission's recipient. + event Distributed(address indexed recipient, uint256 commissionAmount); + + /// @dev Revert when index is out of range + error InvalidArrayLength(); + /// @dev Revert when ratio is invalid + error InvalidRatio(); + /// @dev Revert when amount of RON is invalid + error InvalidAmountOfRON(); + /// @dev Revert when recipient address is null + error NullAddress(); + + /** + * @dev Maximum commission percentage. + */ + function MAX_PERCENTAGE() external pure returns (uint256); + + /** + * @dev Returns the sender role. + */ + function SENDER_ROLE() external pure returns (bytes32); + + /** + * @dev Returns commissions information. + */ + function getCommissions() external view returns (Commission[] memory commissionInfos); + + /** + * @dev Sets all commission information + * + * Requirements: + * - The method caller is setter role. + * - The total ratio must be equal to 100%. + * Emits the event `CommissionsUpdated`. + */ + function setCommissions(Commission[] calldata commissionInfos) external; + + /** + * @dev Sets for specific commission information based on the `commissionIdx`. + * + * Requirements: + * - The method caller is setter role. + * Emits the event `CommissionInfoUpdated`. + */ + function setCommissionInfo(uint256 commissionIdx, address payable newAddr, string calldata name) external; +} diff --git a/src/interfaces/IRONRegistrarController.sol b/src/interfaces/IRONRegistrarController.sol index 22914bda..a4355f48 100644 --- a/src/interfaces/IRONRegistrarController.sol +++ b/src/interfaces/IRONRegistrarController.sol @@ -38,6 +38,8 @@ interface IRONRegistrarController { error ErrInvalidRegisterProtectedName(string name, address requestOwner, bool nameProtected, bool ownerWhitelisted); /// @dev Thrown when received invalid array length error InvalidArrayLength(); + /// @dev Thrown when treasury address is set to null + error NullAddress(); /** * @dev Emitted when the min registration duration is updated. @@ -46,6 +48,9 @@ interface IRONRegistrarController { */ event MinRegistrationDurationUpdated(address indexed operator, uint256 duration); + /// @dev Emitted when the treasury is updated. + event TreasuryUpdated(address indexed addr); + /** * @dev Emitted when RNSDomainPrice contract is updated. * @param operator The address of the operator who triggered the update. diff --git a/test/RNSCommission/RNSCommission._allocateCommissionAndTransferToRecipient.t.sol b/test/RNSCommission/RNSCommission._allocateCommissionAndTransferToRecipient.t.sol new file mode 100644 index 00000000..a9e3f234 --- /dev/null +++ b/test/RNSCommission/RNSCommission._allocateCommissionAndTransferToRecipient.t.sol @@ -0,0 +1,82 @@ +pragma solidity ^0.8.19; + +import "./RNSCommission.t.sol"; +import { console2, Test } from "forge-std/Test.sol"; + +contract RNSCommisson__allocateCommissionAndTransferToRecipient_Test is RNSCommissionTest { + function test__allocateCommissionAndTransferToRecipient_SenderRole_MultiRecipient(uint256 amountRON) external { + vm.assume(amountRON > 0); + vm.assume(amountRON < 1e9 * 1e18); + RNSCommission.Commission[] memory commissionInfos = _rnsCommission.getCommissions(); + + vm.deal(_senders[0], amountRON); + + for (uint256 i; i < commissionInfos.length; i++) { + vm.expectEmit(true, false, false, false); + emit Distributed(commissionInfos[i].recipient, (amountRON * commissionInfos[i].ratio) / 100_00); + } + + bool sent; + vm.prank(_senders[0]); + (sent,) = address(_rnsCommission).call{ value: amountRON }(new bytes(0)); + + uint256 maxPercentage = 100_00; + uint256 skyMavisValue = (amountRON * _skyMavisRatio) / maxPercentage; + assertEq(skyMavisValue, _skyMavisTreasuryAddr.balance); + + uint256 roninValue = amountRON - skyMavisValue; + assertEq(roninValue, _roninNetworkTreasuryAddr.balance); + assertEq(_senders[0].balance, 0); + } + + function test__allocateCommissionAndTransferToRecipient_SenderRole_OnlyOneRecipient(uint256 amountRON) external { + vm.assume(amountRON > 0); + vm.assume(amountRON < 1e9 * 1e18); + + INSCommission.Commission[] memory treasuryCommission = new INSCommission.Commission[](1); + address payable recipient = payable(makeAddr("recipient")); + treasuryCommission[0].recipient = recipient; + treasuryCommission[0].ratio = 100_00; + treasuryCommission[0].name = "recipient"; + + vm.prank(_admin); + _setCommissions(treasuryCommission); + + vm.deal(_senders[0], amountRON); + bool sent; + vm.expectEmit(true, false, false, true); + emit Distributed(recipient, amountRON); + + vm.prank(_senders[0]); + (sent,) = address(_rnsCommission).call{ value: amountRON }(new bytes(0)); + + assertEq(recipient.balance, amountRON); + assertEq(address(_rnsCommission).balance, 0); + assertEq(_senders[0].balance, 0); + } + + function test__allocateCommissionAndTransferToRecipient_InvalidSender(uint256 amountRON) external { + vm.assume(amountRON > 0); + vm.assume(amountRON < 1e9 * 1e18); + + address random = makeAddr("random"); + vm.deal(random, amountRON); + bool sent; + vm.prank(random); + (sent,) = address(_rnsCommission).call{ value: amountRON }(new bytes(0)); + + assertEq(_skyMavisTreasuryAddr.balance, 0); + assertEq(_roninNetworkTreasuryAddr.balance, 0); + assertEq(address(_rnsCommission).balance, amountRON); + assertEq(random.balance, 0); + } + + function test_RevertWhen_RonAmount_is_zero() external { + vm.deal(_senders[0], 1e18); + + bool sent; + vm.expectRevert(INSCommission.InvalidAmountOfRON.selector); + vm.prank(_senders[0]); + (sent,) = address(_rnsCommission).call{ value: 0 }(new bytes(0)); + } +} diff --git a/test/RNSCommission/RNSCommission.setCommissionInfo.t.sol b/test/RNSCommission/RNSCommission.setCommissionInfo.t.sol new file mode 100644 index 00000000..f72e1619 --- /dev/null +++ b/test/RNSCommission/RNSCommission.setCommissionInfo.t.sol @@ -0,0 +1,33 @@ +pragma solidity ^0.8.19; + +import "./RNSCommission.t.sol"; +import { console2, Test } from "forge-std/Test.sol"; + +contract RNSCommisson_SetTreasuryInfo_Test is RNSCommissionTest { + function test_setCommissionInfo_Success(address payable newAddr, uint256 id) external { + uint256 treasuryCount = _rnsCommission.getCommissions().length; + + vm.assume(id < treasuryCount); + + vm.expectEmit(true, true, false, true); + emit CommissionInfoUpdated(_admin, id, newAddr, "name"); + + vm.prank(_admin); + _rnsCommission.setCommissionInfo(id, newAddr, "name"); + + INSCommission.Commission[] memory treasuriesInfoAfterChange = _rnsCommission.getCommissions(); + + assertEq(treasuriesInfoAfterChange[id].recipient, newAddr); + assertEq(treasuriesInfoAfterChange[id].name, "name"); + } + + function test_Revert_When_Invalid_Id(address payable newAddr, uint256 id) external { + uint256 treasuryCount = _rnsCommission.getCommissions().length; + + vm.assume(id >= treasuryCount); + + vm.expectRevert(INSCommission.InvalidArrayLength.selector); + vm.prank(_admin); + _rnsCommission.setCommissionInfo(id, newAddr, "name"); + } +} diff --git a/test/RNSCommission/RNSCommission.setCommissions.t.sol b/test/RNSCommission/RNSCommission.setCommissions.t.sol new file mode 100644 index 00000000..937ee9e1 --- /dev/null +++ b/test/RNSCommission/RNSCommission.setCommissions.t.sol @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import "./RNSCommission.t.sol"; +import { console2, Test } from "forge-std/Test.sol"; + +contract RNSCommisson_SetTreasuries_Test is RNSCommissionTest { + function test_SetCommissions_As_Admin() external { + address payable[] memory treasuriesAddress = new address payable[](2); + uint256[] memory ratio = new uint256[](2); + ratio[0] = _skyMavisRatio; + ratio[1] = _roninRatio; + + treasuriesAddress[0] = payable(makeAddr("random0")); + treasuriesAddress[1] = payable(makeAddr("random1")); + + INSCommission.Commission[] memory commissionInfo = _createCommissionInfo(treasuriesAddress, ratio, _names); + + vm.expectEmit(true, false, false, true); + emit CommissionsUpdated(_admin, commissionInfo); + + vm.prank(_admin); + _setCommissions(commissionInfo); + + INSCommission.Commission[] memory commissionInfoAfterSet = _rnsCommission.getCommissions(); + + assertEq(commissionInfo[0].recipient, commissionInfoAfterSet[0].recipient); + assertEq(commissionInfo[1].recipient, commissionInfoAfterSet[1].recipient); + } + + function test_Revert_When_Invalid_Length(INSCommission.Commission[] memory treasuriesInfo) external { + treasuriesInfo = new INSCommission.Commission[](0); + vm.expectRevert(INSCommission.InvalidArrayLength.selector); + vm.prank(_admin); + _rnsCommission.setCommissions(treasuriesInfo); + } + + function test_Revert_When_Ratio_GreaterThan_100_MultiCommission() external { + address payable[] memory treasuriesAddress = new address payable[](2); + uint256[] memory ratio = new uint256[](2); + ratio[0] = 100_00; + ratio[1] = 1_00; + + treasuriesAddress[0] = payable(makeAddr("random0")); + treasuriesAddress[1] = payable(makeAddr("random1")); + + INSCommission.Commission[] memory commissionInfo = _createCommissionInfo(treasuriesAddress, ratio, _names); + + vm.expectRevert(INSCommission.InvalidRatio.selector); + vm.prank(_admin); + _rnsCommission.setCommissions(commissionInfo); + } + + function test_Revert_When_Ratio_LessThan_100_MultiCommission() external { + address payable[] memory treasuriesAddress = new address payable[](2); + uint256[] memory ratio = new uint256[](2); + ratio[0] = 90_00; + ratio[1] = 1_00; + + treasuriesAddress[0] = payable(makeAddr("random0")); + treasuriesAddress[1] = payable(makeAddr("random1")); + + INSCommission.Commission[] memory commissionInfo = _createCommissionInfo(treasuriesAddress, ratio, _names); + + vm.expectRevert(INSCommission.InvalidRatio.selector); + vm.prank(_admin); + _rnsCommission.setCommissions(commissionInfo); + } + + function test_Revert_When_Ratio_GreaterThan_100_OnlyOne_Commission() external { + address payable[] memory treasuriesAddress = new address payable[](1); + uint256[] memory ratio = new uint256[](1); + ratio[0] = 101_00; + + treasuriesAddress[0] = payable(makeAddr("random0")); + + INSCommission.Commission[] memory commissionInfo = _createCommissionInfo(treasuriesAddress, ratio, _names); + + vm.expectRevert(INSCommission.InvalidRatio.selector); + vm.prank(_admin); + _rnsCommission.setCommissions(commissionInfo); + } + + function test_Revert_When_Ratio_LessThan_100_OnlyOne_Commission() external { + address payable[] memory treasuriesAddress = new address payable[](1); + uint256[] memory ratio = new uint256[](1); + ratio[0] = 90_00; + + treasuriesAddress[0] = payable(makeAddr("random0")); + + INSCommission.Commission[] memory commissionInfo = _createCommissionInfo(treasuriesAddress, ratio, _names); + + vm.expectRevert(INSCommission.InvalidRatio.selector); + vm.prank(_admin); + _rnsCommission.setCommissions(commissionInfo); + } +} diff --git a/test/RNSCommission/RNSCommission.t.sol b/test/RNSCommission/RNSCommission.t.sol new file mode 100644 index 00000000..94344a0d --- /dev/null +++ b/test/RNSCommission/RNSCommission.t.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { console2, Test } from "forge-std/Test.sol"; +import { RNSCommission } from "@rns-contracts/RNSCommission.sol"; +import { INSCommission } from "@rns-contracts/interfaces/INSCommission.sol"; + +contract RNSCommissionTest is Test { + event CommissionsUpdated(address indexed updatedBy, INSCommission.Commission[] commissionInfos); + event Distributed(address indexed recipient, uint256 commissionAmount); + event CommissionInfoUpdated( + address indexed updatedBy, uint256 indexed commissionIdx, address payable newRecipient, string newName + ); + + RNSCommission internal _rnsCommission; + address internal _admin; + address internal _proxyAdmin; + address[] internal _senders; + address payable internal _skyMavisTreasuryAddr; + address payable internal _roninNetworkTreasuryAddr; + string[] internal _names; + uint256 internal _skyMavisRatio; + uint256 internal _roninRatio; + + function setUp() public { + _admin = makeAddr("admin"); + _proxyAdmin = makeAddr("proxyAdmin"); + _names = new string[](2); + + _senders = new address[](1); + _senders[0] = makeAddr("RNS"); + + _skyMavisTreasuryAddr = payable(makeAddr("skyMavis")); + _roninNetworkTreasuryAddr = payable(makeAddr("ronin")); + + _skyMavisRatio = 70_00; + _roninRatio = 30_00; + + _names[0] = "Sky Mavis"; + _names[1] = "RONIN"; + INSCommission.Commission[] memory treasuryCommission = new INSCommission.Commission[](2); + + treasuryCommission[0] = + INSCommission.Commission({ recipient: _skyMavisTreasuryAddr, ratio: _skyMavisRatio, name: _names[0] }); + treasuryCommission[1] = + INSCommission.Commission({ recipient: _roninNetworkTreasuryAddr, ratio: _roninRatio, name: _names[1] }); + + address payable logic = payable(address(new RNSCommission())); + + _rnsCommission = RNSCommission( + payable( + address( + new TransparentUpgradeableProxy( + logic, _proxyAdmin, abi.encodeCall(RNSCommission.initialize, (_admin, treasuryCommission, _senders)) + ) + ) + ) + ); + } + + function _setCommissions(INSCommission.Commission[] memory commissionInfos) internal { + _rnsCommission.setCommissions(commissionInfos); + } + + function _createCommissionInfo( + address payable[] memory treasuriesAddress, + uint256[] memory ratio, + string[] memory names + ) internal returns (INSCommission.Commission[] memory commissionInfo) { + require(treasuriesAddress.length == ratio.length, "Invalid Length"); + + uint256 length = treasuriesAddress.length; + commissionInfo = new INSCommission.Commission[](length); + + for (uint256 i = 0; i < length; ++i) { + commissionInfo[i] = + INSCommission.Commission({ recipient: treasuriesAddress[i], ratio: ratio[i], name: _names[i] }); + } + } + + function test_getCommissions() external { + RNSCommission.Commission[] memory commissionInfo = _rnsCommission.getCommissions(); + assert(commissionInfo.length == 2); + } +} diff --git a/test/RNSCommission/RNSCommission.t.tree b/test/RNSCommission/RNSCommission.t.tree new file mode 100644 index 00000000..e4eece59 --- /dev/null +++ b/test/RNSCommission/RNSCommission.t.tree @@ -0,0 +1,21 @@ +RNSCommission + setCommissions + emit CommissionsUpdated + revert if + commissions length is 0 + sum commissions ratio is not 100 percent + can set commissions with only one commission + + setCommissionInfo + emit CommissionInfoUpdated + revert if index of update commission is out of range + + _allocateCommissionAndTransferToRecipient + emit Distributed for each success transfer + revert if + amount of Ron need to transfer is 0 + commissions length is 0 + can transfer even if there is only 1 commission + if sender does not have `SENDER_ROLE` sender's money will remain in the contract + + \ No newline at end of file diff --git a/test/RNSUnified/RNSUnified.namehash.t.sol b/test/RNSUnified/RNSUnified.namehash.t.sol index 2d3b537f..8bbaab6c 100644 --- a/test/RNSUnified/RNSUnified.namehash.t.sol +++ b/test/RNSUnified/RNSUnified.namehash.t.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.19; import "./RNSUnified.t.sol"; -import { LibString as SoladyLibString } from "solady/utils/LibString.sol"; +import { LibString as SoladyLibString } from "@solady/utils/LibString.sol"; contract RNSUnified_NameHash_Test is RNSUnifiedTest { using SoladyLibString for *; diff --git a/update-deps.sh b/update-deps.sh new file mode 100755 index 00000000..d07e2b8d --- /dev/null +++ b/update-deps.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Set the path to the dependencies folder +DEPENDENCIES_FOLDER="./dependencies" + +# Check if the dependencies folder exists +if [ ! -d "$DEPENDENCIES_FOLDER" ]; then + echo "Dependencies folder does not exist: $DEPENDENCIES_FOLDER" + exit 1 +fi + +# Change directory to the dependencies folder +cd "$DEPENDENCIES_FOLDER" || exit 1 + +# Iterate through each subdirectory in the dependencies folder +for dir in */; do + if [ -d "$dir" ]; then + echo "Updating dependencies in: $dir" + cd "$dir" || exit 1 + + # Check if soldeer.lock exists + if [ ! -f "soldeer.lock" ]; then + echo "soldeer.lock does not exist in: $dir" + echo "Skipping update for: $dir" + cd .. + continue + fi + + # Run soldeer update + forge soldeer update + + # Return to the dependencies folder + cd .. + fi +done + +# Return to the original directory +cd .. + +echo "All dependencies updated." diff --git a/upload-sig.sh b/upload-sig.sh index ea7cb2b9..a71849a9 100755 --- a/upload-sig.sh +++ b/upload-sig.sh @@ -1 +1 @@ -source lib/foundry-deployment-kit/upload-sig.sh \ No newline at end of file +source dependencies/@fdk-0.3.0-beta/upload-sig.sh diff --git a/yarn.lock b/yarn.lock index 35adef10..71e422ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4195,8 +4195,8 @@ __metadata: linkType: hard "tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.0 - resolution: "tar@npm:6.2.0" + version: 6.2.1 + resolution: "tar@npm:6.2.1" dependencies: chownr: ^2.0.0 fs-minipass: ^2.0.0 @@ -4204,7 +4204,7 @@ __metadata: minizlib: ^2.1.1 mkdirp: ^1.0.3 yallist: ^4.0.0 - checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c + checksum: f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c languageName: node linkType: hard @@ -4348,11 +4348,11 @@ __metadata: linkType: hard "undici@npm:^5.14.0": - version: 5.28.3 - resolution: "undici@npm:5.28.3" + version: 5.28.4 + resolution: "undici@npm:5.28.4" dependencies: "@fastify/busboy": ^2.0.0 - checksum: fa1e65aff896c5e2ee23637b632e306f9e3a2b32a3dc0b23ea71e5555ad350bcc25713aea894b3dccc0b7dc2c5e92a5a58435ebc2033b731a5524506f573dfd2 + checksum: a8193132d84540e4dc1895ecc8dbaa176e8a49d26084d6fbe48a292e28397cd19ec5d13bc13e604484e76f94f6e334b2bdc740d5f06a6e50c44072818d0c19f9 languageName: node linkType: hard