Files
smom-dbis-138/artifacts/contracts/bridge/adapters/hyperledger/FireflyAdapter.sol/FireflyAdapter.json
2026-03-02 12:14:09 -08:00

737 lines
41 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "FireflyAdapter",
"sourceName": "contracts/bridge/adapters/hyperledger/FireflyAdapter.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "string",
"name": "_namespace",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "string",
"name": "fireflyTxId",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "sourceChain",
"type": "string"
}
],
"name": "FireflyBridgeConfirmed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "fireflyTxId",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "namespace",
"type": "string"
}
],
"name": "FireflyBridgeInitiated",
"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": "BRIDGE_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "FIREFLY_OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "recipient",
"type": "bytes"
}
],
"name": "bridge",
"outputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "bridgeRequests",
"outputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "cancelBridge",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "string",
"name": "fireflyTxId",
"type": "string"
},
{
"internalType": "string",
"name": "sourceChain",
"type": "string"
}
],
"name": "confirmFireflyOperation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "estimateFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fireflyNamespace",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "fireflyTxIds",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "getBridgeStatus",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "destinationData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
},
{
"internalType": "enum IChainAdapter.BridgeStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "createdAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "completedAt",
"type": "uint256"
}
],
"internalType": "struct IChainAdapter.BridgeRequest",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getChainIdentifier",
"outputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "string",
"name": "identifier",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getChainType",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"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": "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": [],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"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": "bool",
"name": "_isActive",
"type": "bool"
}
],
"name": "setIsActive",
"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": [
{
"internalType": "bytes",
"name": "destination",
"type": "bytes"
}
],
"name": "validateDestination",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x6080604052346200025a5762001ba7803803806200001d816200025f565b9283398101906040818303126200025a578051906001600160a01b03821682036200025a5760208181015190916001600160401b0391908282116200025a570191601f908582850112156200025a5783518381116200022f57601f19946200008b828501871684016200025f565b978289528383830101116200025a57829060005b8381106200024557505060009188010152620000d8600195868055620000c58162000285565b50620000d18162000305565b50620003a7565b5085519283116200022f5760039384548681811c9116801562000224575b838210146200020e57838111620001c3575b50819284116001146200015d5750508192939460009262000151575b505060001982841b1c191690831b1790555b60ff1960025416176002556040516117429081620004458239f35b01519050388062000124565b6000858152828120918516979193925b888210620001ab5750508386979695961062000192575b505050811b01905562000136565b015160001983861b60f8161c1916905538808062000184565b8088859682949686015181550195019301906200016d565b85600052826000208480870160051c82019285881062000204575b0160051c019087905b828110620001f757505062000108565b60008155018790620001e7565b92508192620001de565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000f6565b634e487b7160e01b600052604160045260246000fd5b8181018301518a82018401528492016200009f565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200022f57604052565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200030157818052816020526040822081835260205260408220600160ff19825416179055339160008051602062001b878339815191528180a4600190565b5090565b6001600160a01b031660008181527f0d4654aaffc87c2c9a3fd6a99770bc308fad799420104834ddcca8973d00903960205260408120549091907f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15689060ff16620003a257808352826020526040832082845260205260408320600160ff1982541617905560008051602062001b87833981519152339380a4600190565b505090565b6001600160a01b031660008181527faed5faf133c6df5dff0a133173b838785e5352850072133544f3169fb15444aa60205260408120549091907f5c32fbedc5166e42459a2530170325d775bac723757cc0edb356d3a4dd8ebfea9060ff16620003a257808352826020526040832082845260205260408320600160ff1982541617905560008051602062001b87833981519152339380a460019056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461124d5750806322f3e2d41461122a578063248a9ca3146111fb5780632750fc78146111745780632b368ac2146111285780632f2ff15d146110e957806336568abe146110a25780634be40fd114611067578063590af61514610fa557806360b4141114610eec5780636cb4dfc014610eae5780637ecebe0014610e745780638d75141514610d2557806391d1485414610cd8578063941b968214610c7b57806397e67c3b14610c33578063a217fddf14610c17578063b946027114610bdc578063d046b4e214610a64578063d547741f14610a23578063f33ffba3146104b8578063f5546425146103d15763fba4fb0f1461011c57600080fd5b346103cc5760603660031901126103cc576001600160401b036004356024358281116103cc576101509036906004016112cc565b6044929192358481116103cc5761016b9036906004016112cc565b9190937f5c32fbedc5166e42459a2530170325d775bac723757cc0edb356d3a4dd8ebfea958660005260209660008852604060002033600052885260ff60406000205416156103ae575084600052600487526040600020600581019081549160ff83169260068410156103985760018094036103625760029060ff19161790556007429101558560005260058852604060002091841161034c576102198461021384546112f9565b84611489565b600090601f85116001146102bb5750837fc87e8cd86b4e66aa8409d2af3c5877317d78565ac984ea42a45b30e87b3fda1e9697989386936102758360409887966000916102b0575b508160011b916000199060031b1c19161790565b90555b8186519283928337810160008152039020978451958487958652850152848401376000828201840152601f01601f19168101030190a3005b905084013538610261565b90601f1985168360005289600020926000905b828210610335575050938693849387936040987fc87e8cd86b4e66aa8409d2af3c5877317d78565ac984ea42a45b30e87b3fda1e9b9c9d981061031b575b5050600183811b019055610278565b830135600019600386901b60f8161c19169055388061030c565b86840135855593840193928b0192908b01906102ce565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b8152600481018c9052600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b634e487b7160e01b600052602160045260246000fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b600080fd5b346103cc5760003660031901126103cc576040516003546000826103f4836112f9565b918282526020936001908560018216918260001461049857505060011461043b575b506104239250038361136a565b61043760405192828493845283019061138b565b0390f35b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b858310610480575050610423935082010185610416565b80548389018501528794508693909201918101610469565b60ff19168582015261042395151560051b85010192508791506104169050565b60803660031901126103cc576104cc6112a0565b6044356001600160401b0381116103cc576104eb9036906004016112cc565b9160649182356001600160401b0381116103cc5761050d9036906004016112cc565b5050600260015414610a1157600260015560ff60025416156109da57602435156109a85733600052600660205260406000208054906000198214610992576001820190556105a860a860405180933360601b60208301526bffffffffffffffffffffffff198760601b16603483015260243560488301528886606884013788820190606882015242608882015203608881018452018261136a565b8051602090910120926001600160a01b03831661093557602435341061090057505b604051936105d785611333565b3385526001600160a01b038316602086015260243560408601526105fa8161146e565b91610608604051938461136a565b81835236828201116103cc578160009260209283860137830101526060840152816080840152600160a08401524260c0840152600060e084015281600052600460205260406000209260018060a01b038151166bffffffffffffffffffffffff60a01b9081865416178555600185019060018060a01b03602084015116908254161790556040810151600285015560608101518051906001600160401b03821161034c576106c6826106bd60038901546112f9565b60038901611489565b602090601f831160011461088e576106f7929160009183610883575b50508160011b916000199060031b1c19161790565b60038501555b60808101516004850155600584019360a08201519160068310156103985760e060079160209760ff199560ff87835416911617905560c08101516006850155015191015582604051926024358452606086850152600060608501526080604085015260009260035461076e816112f9565b918260808801526001821691826000146108465750506001146107cd575b506001600160a01b03169233927f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e919081900390a460018055604051908152f35b600360009081529193507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061082e575050830160a001917f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e61078c565b805486840160a00152869350918701916001016107f9565b7f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e94965060a09392501682870152151560051b850101929061078c565b0151905087806106e2565b9190600387016000526020600020906000935b601f19841685106108e5576001945083601f198116106108cc575b505050811b0160038501556106fd565b015160001960f88460031b161c191690558680806108bc565b818101518355602094850194600190930192909101906108a1565b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152fd5b604051906323b872dd60e01b60208301523360248301523060448301526024358183015281528060a08101106001600160401b0360a08301111761034c5760a0810160405261098d906001600160a01b0384166115f8565b6105ca565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b60448201528390fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b60448201528390fd5b604051633ee5aeb560e01b8152600490fd5b346103cc5760403660031901126103cc57610a62600435610a426112b6565b90806000526000602052610a5d6001604060002001546114df565b611583565b005b346103cc576020806003193601126103cc57600435600052600481526040600020600581019060ff8254166006811015610398578015908115610bd1575b5015610b9c5780546001600160a01b0390811633819003610b6257600183015482169081610b155750506000808360028295948395541691015490828215610b0c575bf115610b00575b805460ff1916600517905560405160018152f35b6040513d6000823e3d90fd5b506108fc610ae5565b915091600201546040519163a9059cbb60e01b86840152602483015260448201526044815260808101918183106001600160401b0384111761034c57610b5d926040526115f8565b610aec565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610aa2565b346103cc5760003660031901126103cc5760206040517f5c32fbedc5166e42459a2530170325d775bac723757cc0edb356d3a4dd8ebfea8152f35b346103cc5760003660031901126103cc57602060405160008152f35b346103cc5760003660031901126103cc57610437604051610c538161134f565b600781526646697265666c7960c81b602082015260405191829160208352602083019061138b565b346103cc5760003660031901126103cc57610437604051610c9b8161134f565b60158152742334b932b3363c96a7b931b432b9ba3930ba34b7b760591b60208201526040519182916000835260406020840152604083019061138b565b346103cc5760403660031901126103cc57610cf16112b6565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346103cc576020806003193601126103cc57600060e0604051610d4781611333565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526004815260406000209060405190610d8c82611333565b60018060a01b039283815416835283600182015416918084019283526002820154916040850192835260405193610dd185610dca81600386016113cb565b038661136a565b606086019485526004820154946080870195865260ff6005840154169460a0880195600681101561039857610e65938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610e53610100958660808a015261012089019061138b565b955160a08801525160c0870190611461565b5160e085015251908301520390f35b346103cc5760203660031901126103cc576001600160a01b03610e956112a0565b1660005260066020526020604060002054604051908152f35b346103cc5760203660031901126103cc576004356001600160401b0381116103cc57610ee060209136906004016112cc565b90506040519015158152f35b346103cc5760203660031901126103cc576004356000526004602052604060002060018060a01b039081815416916001820154169060028101549260405191610f4383610f3c81600385016113cb565b038461136a565b610f97600482015493610f8760ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a015288019061138b565b94608087015260a0860190611461565b60c084015260e08301520390f35b346103cc576020806003193601126103cc5760043560005260058152604060002090604051918260008254610fd9816112f9565b9384845260019186600182169182600014611045575050600114611006575b50506104239250038361136a565b85925060005281600020906000915b85831061102d57505061042393508201018580610ff8565b80548389018501528794508693909201918101611015565b925093505061042394915060ff191682840152151560051b8201018580610ff8565b346103cc5760003660031901126103cc5760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346103cc5760403660031901126103cc576110bb6112b6565b336001600160a01b038216036110d757610a6290600435611583565b60405163334bd91960e11b8152600490fd5b346103cc5760403660031901126103cc57610a626004356111086112b6565b908060005260006020526111236001604060002001546114df565b611505565b346103cc5760603660031901126103cc576111416112a0565b506044356001600160401b0381116103cc576111619036906004016112cc565b5050602060405166038d7ea4c680008152f35b346103cc5760203660031901126103cc576004358015158091036103cc573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156111dc5760ff801960025416911617600255600080f35b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b346103cc5760203660031901126103cc5760043560005260006020526020600160406000200154604051908152f35b346103cc5760003660031901126103cc57602060ff600254166040519015158152f35b346103cc5760203660031901126103cc576004359063ffffffff60e01b82168092036103cc57602091637965db0b60e01b811490811561128f575b5015158152f35b6301ffc9a760e01b14905083611288565b600435906001600160a01b03821682036103cc57565b602435906001600160a01b03821682036103cc57565b9181601f840112156103cc578235916001600160401b0383116103cc57602083818601950101116103cc57565b90600182811c92168015611329575b602083101461131357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611308565b61010081019081106001600160401b0382111761034c57604052565b604081019081106001600160401b0382111761034c57604052565b90601f801991011681019081106001600160401b0382111761034c57604052565b919082519283825260005b8481106113b7575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611396565b8054600093926113da826112f9565b918282526020936001916001811690816000146114425750600114611401575b5050505050565b90939495506000929192528360002092846000945b83861061142e575050505001019038808080806113fa565b805485870183015294019385908201611416565b60ff19168685015250505090151560051b0101915038808080806113fa565b9060068210156103985752565b6001600160401b03811161034c57601f01601f191660200190565b90601f811161149757505050565b6000916000526020600020906020601f850160051c830194106114d5575b601f0160051c01915b8281106114ca57505050565b8181556001016114be565b90925082906114b5565b80600052600060205260406000203360005260205260ff60406000205416156103ae5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461157e57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff60408420541660001461157e5780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b031690611642600080836020829551910182875af13d156116a1573d906116248261146e565b91611632604051938461136a565b82523d84602084013e5b846116a9565b908151918215159283611672575b50505061165a5750565b60249060405190635274afe760e01b82526004820152fd5b81929350906020918101031261169d57602001519081159182150361169a5750388080611650565b80fd5b5080fd5b60609061163c565b906116d057508051156116be57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611703575b6116e1575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156116d956fea26469706673582212200b422f6a31a43de3a4e4876e383faf4f745aca6a5bbe47fa0461aefdb4c787b564736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461124d5750806322f3e2d41461122a578063248a9ca3146111fb5780632750fc78146111745780632b368ac2146111285780632f2ff15d146110e957806336568abe146110a25780634be40fd114611067578063590af61514610fa557806360b4141114610eec5780636cb4dfc014610eae5780637ecebe0014610e745780638d75141514610d2557806391d1485414610cd8578063941b968214610c7b57806397e67c3b14610c33578063a217fddf14610c17578063b946027114610bdc578063d046b4e214610a64578063d547741f14610a23578063f33ffba3146104b8578063f5546425146103d15763fba4fb0f1461011c57600080fd5b346103cc5760603660031901126103cc576001600160401b036004356024358281116103cc576101509036906004016112cc565b6044929192358481116103cc5761016b9036906004016112cc565b9190937f5c32fbedc5166e42459a2530170325d775bac723757cc0edb356d3a4dd8ebfea958660005260209660008852604060002033600052885260ff60406000205416156103ae575084600052600487526040600020600581019081549160ff83169260068410156103985760018094036103625760029060ff19161790556007429101558560005260058852604060002091841161034c576102198461021384546112f9565b84611489565b600090601f85116001146102bb5750837fc87e8cd86b4e66aa8409d2af3c5877317d78565ac984ea42a45b30e87b3fda1e9697989386936102758360409887966000916102b0575b508160011b916000199060031b1c19161790565b90555b8186519283928337810160008152039020978451958487958652850152848401376000828201840152601f01601f19168101030190a3005b905084013538610261565b90601f1985168360005289600020926000905b828210610335575050938693849387936040987fc87e8cd86b4e66aa8409d2af3c5877317d78565ac984ea42a45b30e87b3fda1e9b9c9d981061031b575b5050600183811b019055610278565b830135600019600386901b60f8161c19169055388061030c565b86840135855593840193928b0192908b01906102ce565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b8152600481018c9052600e60248201526d496e76616c69642073746174757360901b6044820152606490fd5b634e487b7160e01b600052602160045260246000fd5b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b600080fd5b346103cc5760003660031901126103cc576040516003546000826103f4836112f9565b918282526020936001908560018216918260001461049857505060011461043b575b506104239250038361136a565b61043760405192828493845283019061138b565b0390f35b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b858310610480575050610423935082010185610416565b80548389018501528794508693909201918101610469565b60ff19168582015261042395151560051b85010192508791506104169050565b60803660031901126103cc576104cc6112a0565b6044356001600160401b0381116103cc576104eb9036906004016112cc565b9160649182356001600160401b0381116103cc5761050d9036906004016112cc565b5050600260015414610a1157600260015560ff60025416156109da57602435156109a85733600052600660205260406000208054906000198214610992576001820190556105a860a860405180933360601b60208301526bffffffffffffffffffffffff198760601b16603483015260243560488301528886606884013788820190606882015242608882015203608881018452018261136a565b8051602090910120926001600160a01b03831661093557602435341061090057505b604051936105d785611333565b3385526001600160a01b038316602086015260243560408601526105fa8161146e565b91610608604051938461136a565b81835236828201116103cc578160009260209283860137830101526060840152816080840152600160a08401524260c0840152600060e084015281600052600460205260406000209260018060a01b038151166bffffffffffffffffffffffff60a01b9081865416178555600185019060018060a01b03602084015116908254161790556040810151600285015560608101518051906001600160401b03821161034c576106c6826106bd60038901546112f9565b60038901611489565b602090601f831160011461088e576106f7929160009183610883575b50508160011b916000199060031b1c19161790565b60038501555b60808101516004850155600584019360a08201519160068310156103985760e060079160209760ff199560ff87835416911617905560c08101516006850155015191015582604051926024358452606086850152600060608501526080604085015260009260035461076e816112f9565b918260808801526001821691826000146108465750506001146107cd575b506001600160a01b03169233927f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e919081900390a460018055604051908152f35b600360009081529193507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061082e575050830160a001917f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e61078c565b805486840160a00152869350918701916001016107f9565b7f16c24d1441bbb2014d186e366159a44dae07ccf53d3fd03029681762b6bb3d4e94965060a09392501682870152151560051b850101929061078c565b0151905087806106e2565b9190600387016000526020600020906000935b601f19841685106108e5576001945083601f198116106108cc575b505050811b0160038501556106fd565b015160001960f88460031b161c191690558680806108bc565b818101518355602094850194600190930192909101906108a1565b60405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b6044820152fd5b604051906323b872dd60e01b60208301523360248301523060448301526024358183015281528060a08101106001600160401b0360a08301111761034c5760a0810160405261098d906001600160a01b0384166115f8565b6105ca565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b60448201528390fd5b60405162461bcd60e51b815260206004820152601060248201526f4164617074657220696e61637469766560801b60448201528390fd5b604051633ee5aeb560e01b8152600490fd5b346103cc5760403660031901126103cc57610a62600435610a426112b6565b90806000526000602052610a5d6001604060002001546114df565b611583565b005b346103cc576020806003193601126103cc57600435600052600481526040600020600581019060ff8254166006811015610398578015908115610bd1575b5015610b9c5780546001600160a01b0390811633819003610b6257600183015482169081610b155750506000808360028295948395541691015490828215610b0c575bf115610b00575b805460ff1916600517905560405160018152f35b6040513d6000823e3d90fd5b506108fc610ae5565b915091600201546040519163a9059cbb60e01b86840152602483015260448201526044815260808101918183106001600160401b0384111761034c57610b5d926040526115f8565b610aec565b60405162461bcd60e51b81526004810186905260126024820152712737ba103932b8bab2b9ba1039b2b73232b960711b6044820152606490fd5b60405162461bcd60e51b815260048101849052600d60248201526c10d85b9b9bdd0818d85b98d95b609a1b6044820152606490fd5b600191501484610aa2565b346103cc5760003660031901126103cc5760206040517f5c32fbedc5166e42459a2530170325d775bac723757cc0edb356d3a4dd8ebfea8152f35b346103cc5760003660031901126103cc57602060405160008152f35b346103cc5760003660031901126103cc57610437604051610c538161134f565b600781526646697265666c7960c81b602082015260405191829160208352602083019061138b565b346103cc5760003660031901126103cc57610437604051610c9b8161134f565b60158152742334b932b3363c96a7b931b432b9ba3930ba34b7b760591b60208201526040519182916000835260406020840152604083019061138b565b346103cc5760403660031901126103cc57610cf16112b6565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346103cc576020806003193601126103cc57600060e0604051610d4781611333565b82815282848201528260408201526060808201528260808201528260a08201528260c082015201526004356000526004815260406000209060405190610d8c82611333565b60018060a01b039283815416835283600182015416918084019283526002820154916040850192835260405193610dd185610dca81600386016113cb565b038661136a565b606086019485526004820154946080870195865260ff6005840154169460a0880195600681101561039857610e65938a918852600760068701549660c08c0197885201549660e08b019788526040519b8c9b828d525116908b0152511660408901525160608801525193610e53610100958660808a015261012089019061138b565b955160a08801525160c0870190611461565b5160e085015251908301520390f35b346103cc5760203660031901126103cc576001600160a01b03610e956112a0565b1660005260066020526020604060002054604051908152f35b346103cc5760203660031901126103cc576004356001600160401b0381116103cc57610ee060209136906004016112cc565b90506040519015158152f35b346103cc5760203660031901126103cc576004356000526004602052604060002060018060a01b039081815416916001820154169060028101549260405191610f4383610f3c81600385016113cb565b038461136a565b610f97600482015493610f8760ff600585015416916007600686015495015495604051998a99610100928b5260208b015260408a01528060608a015288019061138b565b94608087015260a0860190611461565b60c084015260e08301520390f35b346103cc576020806003193601126103cc5760043560005260058152604060002090604051918260008254610fd9816112f9565b9384845260019186600182169182600014611045575050600114611006575b50506104239250038361136a565b85925060005281600020906000915b85831061102d57505061042393508201018580610ff8565b80548389018501528794508693909201918101611015565b925093505061042394915060ff191682840152151560051b8201018580610ff8565b346103cc5760003660031901126103cc5760206040517f7045adfe67d5f94dbfddcdb901e44bef55baacabb398c7cddda1bfd7620b15688152f35b346103cc5760403660031901126103cc576110bb6112b6565b336001600160a01b038216036110d757610a6290600435611583565b60405163334bd91960e11b8152600490fd5b346103cc5760403660031901126103cc57610a626004356111086112b6565b908060005260006020526111236001604060002001546114df565b611505565b346103cc5760603660031901126103cc576111416112a0565b506044356001600160401b0381116103cc576111619036906004016112cc565b5050602060405166038d7ea4c680008152f35b346103cc5760203660031901126103cc576004358015158091036103cc573360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156111dc5760ff801960025416911617600255600080f35b60405163e2517d3f60e01b815233600482015260006024820152604490fd5b346103cc5760203660031901126103cc5760043560005260006020526020600160406000200154604051908152f35b346103cc5760003660031901126103cc57602060ff600254166040519015158152f35b346103cc5760203660031901126103cc576004359063ffffffff60e01b82168092036103cc57602091637965db0b60e01b811490811561128f575b5015158152f35b6301ffc9a760e01b14905083611288565b600435906001600160a01b03821682036103cc57565b602435906001600160a01b03821682036103cc57565b9181601f840112156103cc578235916001600160401b0383116103cc57602083818601950101116103cc57565b90600182811c92168015611329575b602083101461131357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611308565b61010081019081106001600160401b0382111761034c57604052565b604081019081106001600160401b0382111761034c57604052565b90601f801991011681019081106001600160401b0382111761034c57604052565b919082519283825260005b8481106113b7575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611396565b8054600093926113da826112f9565b918282526020936001916001811690816000146114425750600114611401575b5050505050565b90939495506000929192528360002092846000945b83861061142e575050505001019038808080806113fa565b805485870183015294019385908201611416565b60ff19168685015250505090151560051b0101915038808080806113fa565b9060068210156103985752565b6001600160401b03811161034c57601f01601f191660200190565b90601f811161149757505050565b6000916000526020600020906020601f850160051c830194106114d5575b601f0160051c01915b8281106114ca57505050565b8181556001016114be565b90925082906114b5565b80600052600060205260406000203360005260205260ff60406000205416156103ae5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461157e57808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff60408420541660001461157e5780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60018060a01b031690611642600080836020829551910182875af13d156116a1573d906116248261146e565b91611632604051938461136a565b82523d84602084013e5b846116a9565b908151918215159283611672575b50505061165a5750565b60249060405190635274afe760e01b82526004820152fd5b81929350906020918101031261169d57602001519081159182150361169a5750388080611650565b80fd5b5080fd5b60609061163c565b906116d057508051156116be57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611703575b6116e1575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156116d956fea26469706673582212200b422f6a31a43de3a4e4876e383faf4f745aca6a5bbe47fa0461aefdb4c787b564736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}