UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

335 lines (334 loc) 28.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Diamond", "sourceName": "contracts/Diamond.sol", "abi": [ { "inputs": [ { "components": [ { "internalType": "address", "name": "facetAddress", "type": "address" }, { "internalType": "enum IDiamond.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "functionSelectors", "type": "bytes4[]" } ], "internalType": "struct IDiamond.FacetCut[]", "name": "_diamondCut", "type": "tuple[]" }, { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "init", "type": "address" }, { "internalType": "bytes", "name": "initCalldata", "type": "bytes" } ], "internalType": "struct DiamondArgs", "name": "_args", "type": "tuple" } ], "stateMutability": "payable", "type": "constructor" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotAddFunctionToDiamondThatAlreadyExists", "type": "error" }, { "inputs": [ { "internalType": "bytes4[]", "name": "_selectors", "type": "bytes4[]" } ], "name": "CannotAddSelectorsToZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotRemoveFunctionThatDoesNotExist", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotRemoveImmutableFunction", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceFunctionThatDoesNotExists", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", "type": "error" }, { "inputs": [ { "internalType": "bytes4[]", "name": "_selectors", "type": "bytes4[]" } ], "name": "CannotReplaceFunctionsFromFacetWithZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_selector", "type": "bytes4" } ], "name": "CannotReplaceImmutableFunction", "type": "error" }, { "inputs": [ { "internalType": "bytes4", "name": "_functionSelector", "type": "bytes4" } ], "name": "FunctionNotFound", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "_action", "type": "uint8" } ], "name": "IncorrectFacetCutAction", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_initializationContractAddress", "type": "address" }, { "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "InitializationFunctionReverted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_contractAddress", "type": "address" }, { "internalType": "string", "name": "_message", "type": "string" } ], "name": "NoBytecodeAtAddress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_facetAddress", "type": "address" } ], "name": "NoSelectorsProvidedForFacetForCut", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_facetAddress", "type": "address" } ], "name": "RemoveFacetAddressMustBeZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "facetAddress", "type": "address" }, { "internalType": "enum IDiamond.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "functionSelectors", "type": "bytes4[]" } ], "indexed": false, "internalType": "struct IDiamond.FacetCut[]", "name": "_diamondCut", "type": "tuple[]" }, { "indexed": false, "internalType": "address", "name": "_init", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "DiamondCut", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "facetAddress", "type": "address" }, { "internalType": "enum IDiamond.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "functionSelectors", "type": "bytes4[]" } ], "internalType": "struct IDiamond.FacetCut[]", "name": "_diamondCut", "type": "tuple[]" }, { "internalType": "address", "name": "_init", "type": "address" }, { "internalType": "bytes", "name": "_calldata", "type": "bytes" } ], "name": "diamondCut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x6080604052611a24803803806100148161098d565b92833981016040828203126108755781516001600160401b0381116108755782019181601f8401121561087557825190610055610050836109b2565b61098d565b93602085848152016020819460051b830101918583116108755760208101915b83831061087957505050506020810151906001600160401b0382116108755701606081840312610875576100a761094f565b6100b0826109c9565b81526100be602083016109c9565b60208201908152604083015190926001600160401b038211610875570184601f82011215610875578051906100f5610050836109dd565b95828752602083830101116108755760208288959493825f9401838a015e8701015260408101859052517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3515f926001600160a01b0390911691905b815184101561075a5760406101aa85846109f8565b510151916001600160a01b036101c086836109f8565b515116938351156107475760206101d787846109f8565b510151600381101561073357806103e1575084156103c25761ffff5f516020611a045f395f51905f5254169261024d610210606061098d565b602481527f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20602082015263636f646560e01b604082015287610bbb565b5f935b85518510156103aa576001600160e01b031961026c86886109f8565b51165f8181525f5160206119e45f395f51905f5260205260409020546001600160a01b0316610398576102fe6102a061096e565b89815261ffff9390931660208085018281525f8581525f5160206119e45f395f51905f5290925260409091209451855491516001600160b01b03199092166001600160a01b03919091161760a09190911b61ffff60a01b1617909355565b5f516020611a045f395f51905f525490680100000000000000008210156103845761033e82600161035b94015f516020611a045f395f51905f5255610a44565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b61ffff81146103705760019485019401610250565b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b63ebbf5d0760e01b5f5260045260245ffd5b5094509490959250600191505b019291939093610195565b6040516302b8da0760e21b8152806103dd8660048301610a9c565b0390fd5b9496946001810361053a5750861561051f57919391610444610403606061098d565b602881527f4c69624469616d6f6e644375743a205265706c61636520666163657420686173602082015267206e6f20636f646560c01b604082015288610bbb565b6001600160a01b038716945f5b855181101561050e576001600160e01b031961046d82886109f8565b51165f8181525f5160206119e45f395f51905f5260205260409020546001600160a01b03163081146104fb578a81146104e857156104d6575f9081525f5160206119e45f395f51905f526020526040902080546001600160a01b03191688179055600101610451565b637479f93960e01b5f5260045260245ffd5b50631ac6ce8d60e11b5f5260045260245ffd5b50632901806d60e11b5f5260045260245ffd5b5094509490955060019192506103b7565b60405163cd98a96f60e01b8152806103dd8660048301610a9c565b939493919290916002810361071d57505f516020611a045f395f51905f5254968061070b57505f5b85518110156106fd576001600160e01b031961057e82886109f8565b511690815f525f5160206119e45f395f51905f5260205260405f20986105a261096e565b99549960018060a01b038b1680825261ffff602083019c60a01c168c52156106ea57516001600160a01b031630146106d7578015610370575f1901988961ffff82511603610663575b505f516020611a045f395f51905f525491821561064f576001925f190161061181610a44565b63ffffffff82549160031b1b191690555f516020611a045f395f51905f52555f525f5160206119e45f395f51905f526020525f604081205501610562565b634e487b7160e01b5f52603160045260245ffd5b6106d19061ffff6106738c610a44565b90549060031b1c60e01b9161068e8361033e84845116610a44565b516001600160e01b03199092165f9081525f5160206119e45f395f51905f5260205260409020805461ffff60a01b19169190921660a01b61ffff60a01b16179055565b896105eb565b82630df5fd6160e31b5f5260045260245ffd5b83637a08a22d60e01b5f5260045260245ffd5b5093509360019195506103b7565b63d091bc8160e01b5f5260045260245ffd5b60ff90633ff4d20f60e11b5f521660045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b8463e767f91f60e01b5f5260045260245ffd5b9392506040519060608201906060835251809152608082019060808160051b84010195915f905b8282106107df576107d087877f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67388806107c88e856020840152828103604084015286610a20565b0390a1610adf565b604051610de99081610bfb8239f35b848803607f19018152835180516001600160a01b03168952602081015194989394929391926060830191600382101561073357604060809160209384870152015193606060408201528451809452019201905f905b80821061085257505050602080600192990192019201909291610781565b82516001600160e01b031916845260209384019390920191600190910190610834565b5f80fd5b82516001600160401b0381116108755782016060818903601f190112610875576108a161094f565b906108ae602082016109c9565b82526040810151600381101561087557602083015260608101516001600160401b03811161087557602091010188601f820112156108755780516108f4610050826109b2565b9160208084848152019260051b820101908b821161087557602001915b81831061092e575050506040820152815260209283019201610075565b82516001600160e01b03198116810361087557815260209283019201610911565b60405190606082016001600160401b0381118382101761038457604052565b60408051919082016001600160401b0381118382101761038457604052565b6040519190601f01601f191682016001600160401b0381118382101761038457604052565b6001600160401b0381116103845760051b60200190565b51906001600160a01b038216820361087557565b6001600160401b03811161038457601f01601f191660200190565b8051821015610a0c5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b905f516020611a045f395f51905f5254821015610a0c575f516020611a045f395f51905f525f52600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b60206040818301928281528451809452019201905f5b818110610abf5750505090565b82516001600160e01b031916845260209384019390920191600101610ab2565b6001600160a01b03811691908215610bb6575f8091610b42610b01606061098d565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015282610bbb565b83519060208501905af4913d15610bae573d92610b61610050856109dd565b9384523d5f602086013e5b15610b7657505050565b825115610b8557825160208401fd5b6103dd60405192839263192105d760e01b84526004840152604060248401526044830190610a20565b606092610b6c565b505050565b803b15610bc6575050565b6040805163919834b960e01b81526001600160a01b03909216600483015260248201529081906103dd906044830190610a2056fe60806040526004361015610015575b366102ef57005b5f3560e01c631f931c1c0361000e57346100c45760603660031901126100c45760043567ffffffffffffffff81116100c457366023820112156100c45780600401356100686100638261021f565b6101f9565b916024602084848152019260051b820101903682116100c45760248101925b8284106100c85784610097610237565b906044359167ffffffffffffffff83116100c4576100bc6100c293369060040161027d565b916104d3565b005b5f80fd5b833567ffffffffffffffff81116100c4578201606060231982360301126100c4576100f16101b4565b906100fe6024820161024d565b8252604481013560038110156100c4576020830152606481013567ffffffffffffffff81116100c457602491010136601f820112156100c45780356101456100638261021f565b9160208084848152019260051b820101903682116100c457602001915b81831061017f575050506040820152815260209384019301610087565b82356001600160e01b0319811681036100c457815260209283019201610162565b634e487b7160e01b5f52604160045260245ffd5b604051906060820182811067ffffffffffffffff8211176101d457604052565b6101a0565b604051906040820182811067ffffffffffffffff8211176101d457604052565b6040519190601f01601f1916820167ffffffffffffffff8111838210176101d457604052565b67ffffffffffffffff81116101d45760051b60200190565b602435906001600160a01b03821682036100c457565b35906001600160a01b03821682036100c457565b67ffffffffffffffff81116101d457601f01601f191660200190565b81601f820112156100c45780359061029761006383610261565b92828452602083830101116100c457815f926020809301838601378301015290565b63ffffffff60e01b165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260405f2090565b5f80356001600160e01b0319168082527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040909120546001600160a01b0316908115610356575f8083368280378136915af43d5f803e15610352573d5ff35b3d5ffd5b630a82dd7360e31b5f5260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b80518210156103905760209160051b010190565b610368565b6003111561039f57565b634e487b7160e01b5f52602160045260245ffd5b51600381101561039f5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9392909193606081016060825283518091526080820190602060808260051b8501019501915f905b82821061043d575050506001600160a01b03909516602082015292935061043a9260408184039101526103c0565b90565b848703607f19018152835180516001600160a01b03168852602081015194979394929391926060830191600382101561039f57604060809160209384870152015193606060408201528451809452019201905f905b8082106104b05750505060208060019298019201920190929161040c565b82516001600160e01b031916845260209384019390920191600190910190610492565b9290915f5b84518110156105cd5760406104ed828761037c565b51015161050b6104fd838861037c565b51516001600160a01b031690565b8151156105b2576105286020610521858a61037c565b51016103b3565b61053181610395565b8061054a57506001929161054491610b7b565b016104d8565b61055381610395565b6001810361056e57506001929161056991610982565b610544565b61057781610395565b6002810361058d57506001929161056991610738565b8061059a6105af92610395565b633ff4d20f60e11b5f5260ff16600452602490565b5ffd5b63e767f91f60e01b5f526001600160a01b031660045260245ffd5b509092917f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738161060f9461060785604051938493846103e4565b0390a1610ca8565b565b9061ffff61061d6101d9565b92546001600160a01b038116845260a01c166020830152565b634e487b7160e01b5f52601160045260245ffd5b8015610656575f190190565b610636565b905f516020610d945f395f51905f5254821015610390575f516020610d945f395f51905f525f52600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b9190918054831015610390575f52601c60205f208360031c019260021b1690565b5f516020610d945f395f51905f52548015610724575f1901610703815f516020610d945f395f51905f526106b3565b63ffffffff82549160031b1b191690555f516020610d945f395f51905f5255565b634e487b7160e01b5f52603160045260245ffd5b5f516020610d945f395f51905f52549291906001600160a01b0381166108dc57505f5b81518110156108d65761077f610771828461037c565b516001600160e01b03191690565b61079061078b826102b9565b610611565b80519095906107af906001600160a01b03165b6001600160a01b031690565b156108b957855130906107ca906001600160a01b03166107a3565b1461089c576108096001939260206107e25f9461064a565b98018861ffff6107f4835161ffff1690565b1603610810575b506108046106d4565b6102b9565b550161075b565b610896906108776108716108336108268d61065b565b90549060031b1c60e01b90565b926108698461084c610847845161ffff1690565b61065b565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b5161ffff1690565b916102b9565b805461ffff60a01b191660a09290921b61ffff60a01b16919091179055565b5f6107fb565b630df5fd6160e31b5f526001600160e01b0319821660045260245ffd5b637a08a22d60e01b5f526001600160e01b0319821660045260245ffd5b50509050565b63d091bc8160e01b5f526001600160a01b031660045260245ffd5b60206040818301928281528451809452019201905f5b81811061091a5750505090565b82516001600160e01b03191684526020938401939092019160010161090d565b61094460606101f9565b906028825267206e6f20636f646560c01b6040837f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201520152565b6001600160a01b03811692918315610a7e576109a561099f61093a565b83610d54565b5f5b8151811015610a77576109bd610771828461037c565b6109d96107a36109cc836102b9565b546001600160a01b031690565b308114610a5a57868114610a3d5715610a215790610a1b846109fc6001946102b9565b80546001600160a01b0319166001600160a01b03909216919091179055565b016109a7565b637479f93960e01b5f526001600160e01b03191660045260245ffd5b631ac6ce8d60e11b5f526001600160e01b0319821660045260245ffd5b632901806d60e11b5f526001600160e01b0319821660045260245ffd5b5050509050565b60405163cd98a96f60e01b8152908190610a9b90600483016108f7565b0390fd5b610aa960606101f9565b906024825263636f646560e01b6040837f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201520152565b8151815460209093015161ffff60a01b60a09190911b166001600160b01b03199093166001600160a01b0390911617919091179055565b5f516020610d945f395f51905f525490680100000000000000008210156101d45761084c82600161060f94015f516020610d945f395f51905f52555f516020610d945f395f51905f526106b3565b61ffff1661ffff81146106565760010190565b91906001600160a01b03831615610c44575f516020610d945f395f51905f525461ffff1690610bb1610bab610a9f565b85610d54565b5f915b8151831015610a7757610bca610771848461037c565b610bd96107a36109cc836102b9565b610c2857600191610c1b610c2092610c16610bf26101d9565b6001600160a01b038b16815261ffff85166020820152610c11836102b9565b610ae3565b610b1a565b610b68565b920191610bb4565b63ebbf5d0760e01b5f526001600160e01b03191660045260245ffd5b6040516302b8da0760e21b8152908190610a9b90600483016108f7565b3d15610c81573d90610c7561006383610261565b9182523d5f602084013e565b606090565b6001600160a01b03909116815260406020820181905261043a929101906103c0565b906001600160a01b03821615610d5057610d06610cc560606101f9565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015283610d54565b5f80825160208401855af491610d1a610c61565b9215610d2557505050565b825115610d3457825160208401fd5b610a9b60405192839263192105d760e01b845260048401610c86565b5050565b803b15610d5f575050565b6040805163919834b960e01b81526001600160a01b0390921660048301526024820152908190610a9b9060448301906103c056fec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131da26469706673582212206954d3d59267a1b77858725444cea6d825954449e9e9a2d68ee2c50937a57ddc64736f6c634300081e0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d", "deployedBytecode": "0x60806040526004361015610015575b366102ef57005b5f3560e01c631f931c1c0361000e57346100c45760603660031901126100c45760043567ffffffffffffffff81116100c457366023820112156100c45780600401356100686100638261021f565b6101f9565b916024602084848152019260051b820101903682116100c45760248101925b8284106100c85784610097610237565b906044359167ffffffffffffffff83116100c4576100bc6100c293369060040161027d565b916104d3565b005b5f80fd5b833567ffffffffffffffff81116100c4578201606060231982360301126100c4576100f16101b4565b906100fe6024820161024d565b8252604481013560038110156100c4576020830152606481013567ffffffffffffffff81116100c457602491010136601f820112156100c45780356101456100638261021f565b9160208084848152019260051b820101903682116100c457602001915b81831061017f575050506040820152815260209384019301610087565b82356001600160e01b0319811681036100c457815260209283019201610162565b634e487b7160e01b5f52604160045260245ffd5b604051906060820182811067ffffffffffffffff8211176101d457604052565b6101a0565b604051906040820182811067ffffffffffffffff8211176101d457604052565b6040519190601f01601f1916820167ffffffffffffffff8111838210176101d457604052565b67ffffffffffffffff81116101d45760051b60200190565b602435906001600160a01b03821682036100c457565b35906001600160a01b03821682036100c457565b67ffffffffffffffff81116101d457601f01601f191660200190565b81601f820112156100c45780359061029761006383610261565b92828452602083830101116100c457815f926020809301838601378301015290565b63ffffffff60e01b165f527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60205260405f2090565b5f80356001600160e01b0319168082527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020526040909120546001600160a01b0316908115610356575f8083368280378136915af43d5f803e15610352573d5ff35b3d5ffd5b630a82dd7360e31b5f5260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b80518210156103905760209160051b010190565b610368565b6003111561039f57565b634e487b7160e01b5f52602160045260245ffd5b51600381101561039f5790565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9392909193606081016060825283518091526080820190602060808260051b8501019501915f905b82821061043d575050506001600160a01b03909516602082015292935061043a9260408184039101526103c0565b90565b848703607f19018152835180516001600160a01b03168852602081015194979394929391926060830191600382101561039f57604060809160209384870152015193606060408201528451809452019201905f905b8082106104b05750505060208060019298019201920190929161040c565b82516001600160e01b031916845260209384019390920191600190910190610492565b9290915f5b84518110156105cd5760406104ed828761037c565b51015161050b6104fd838861037c565b51516001600160a01b031690565b8151156105b2576105286020610521858a61037c565b51016103b3565b61053181610395565b8061054a57506001929161054491610b7b565b016104d8565b61055381610395565b6001810361056e57506001929161056991610982565b610544565b61057781610395565b6002810361058d57506001929161056991610738565b8061059a6105af92610395565b633ff4d20f60e11b5f5260ff16600452602490565b5ffd5b63e767f91f60e01b5f526001600160a01b031660045260245ffd5b509092917f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738161060f9461060785604051938493846103e4565b0390a1610ca8565b565b9061ffff61061d6101d9565b92546001600160a01b038116845260a01c166020830152565b634e487b7160e01b5f52601160045260245ffd5b8015610656575f190190565b610636565b905f516020610d945f395f51905f5254821015610390575f516020610d945f395f51905f525f52600382901c7fc0d727610ea16241eff4447d08bb1b4595f7d2ec4515282437a13b7d0df4b922019160021b601c1690565b9190918054831015610390575f52601c60205f208360031c019260021b1690565b5f516020610d945f395f51905f52548015610724575f1901610703815f516020610d945f395f51905f526106b3565b63ffffffff82549160031b1b191690555f516020610d945f395f51905f5255565b634e487b7160e01b5f52603160045260245ffd5b5f516020610d945f395f51905f52549291906001600160a01b0381166108dc57505f5b81518110156108d65761077f610771828461037c565b516001600160e01b03191690565b61079061078b826102b9565b610611565b80519095906107af906001600160a01b03165b6001600160a01b031690565b156108b957855130906107ca906001600160a01b03166107a3565b1461089c576108096001939260206107e25f9461064a565b98018861ffff6107f4835161ffff1690565b1603610810575b506108046106d4565b6102b9565b550161075b565b610896906108776108716108336108268d61065b565b90549060031b1c60e01b90565b926108698461084c610847845161ffff1690565b61065b565b90919063ffffffff83549160031b9260e01c831b921b1916179055565b5161ffff1690565b916102b9565b805461ffff60a01b191660a09290921b61ffff60a01b16919091179055565b5f6107fb565b630df5fd6160e31b5f526001600160e01b0319821660045260245ffd5b637a08a22d60e01b5f526001600160e01b0319821660045260245ffd5b50509050565b63d091bc8160e01b5f526001600160a01b031660045260245ffd5b60206040818301928281528451809452019201905f5b81811061091a5750505090565b82516001600160e01b03191684526020938401939092019160010161090d565b61094460606101f9565b906028825267206e6f20636f646560c01b6040837f4c69624469616d6f6e644375743a205265706c6163652066616365742068617360208201520152565b6001600160a01b03811692918315610a7e576109a561099f61093a565b83610d54565b5f5b8151811015610a77576109bd610771828461037c565b6109d96107a36109cc836102b9565b546001600160a01b031690565b308114610a5a57868114610a3d5715610a215790610a1b846109fc6001946102b9565b80546001600160a01b0319166001600160a01b03909216919091179055565b016109a7565b637479f93960e01b5f526001600160e01b03191660045260245ffd5b631ac6ce8d60e11b5f526001600160e01b0319821660045260245ffd5b632901806d60e11b5f526001600160e01b0319821660045260245ffd5b5050509050565b60405163cd98a96f60e01b8152908190610a9b90600483016108f7565b0390fd5b610aa960606101f9565b906024825263636f646560e01b6040837f4c69624469616d6f6e644375743a2041646420666163657420686173206e6f2060208201520152565b8151815460209093015161ffff60a01b60a09190911b166001600160b01b03199093166001600160a01b0390911617919091179055565b5f516020610d945f395f51905f525490680100000000000000008210156101d45761084c82600161060f94015f516020610d945f395f51905f52555f516020610d945f395f51905f526106b3565b61ffff1661ffff81146106565760010190565b91906001600160a01b03831615610c44575f516020610d945f395f51905f525461ffff1690610bb1610bab610a9f565b85610d54565b5f915b8151831015610a7757610bca610771848461037c565b610bd96107a36109cc836102b9565b610c2857600191610c1b610c2092610c16610bf26101d9565b6001600160a01b038b16815261ffff85166020820152610c11836102b9565b610ae3565b610b1a565b610b68565b920191610bb4565b63ebbf5d0760e01b5f526001600160e01b03191660045260245ffd5b6040516302b8da0760e21b8152908190610a9b90600483016108f7565b3d15610c81573d90610c7561006383610261565b9182523d5f602084013e565b606090565b6001600160a01b03909116815260406020820181905261043a929101906103c0565b906001600160a01b03821615610d5057610d06610cc560606101f9565b602881527f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173602082015267206e6f20636f646560c01b604082015283610d54565b5f80825160208401855af491610d1a610c61565b9215610d2557505050565b825115610d3457825160208401fd5b610a9b60405192839263192105d760e01b845260048401610c86565b5050565b803b15610d5f575050565b6040805163919834b960e01b81526001600160a01b0390921660048301526024820152908190610a9b9060448301906103c056fec8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131da26469706673582212206954d3d59267a1b77858725444cea6d825954449e9e9a2d68ee2c50937a57ddc64736f6c634300081e0033", "linkReferences": {}, "deployedLinkReferences": {} }