Files
smom-dbis-138/artifacts/contracts/vault/Vault.sol/Vault.json
2026-03-02 12:14:09 -08:00

680 lines
42 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "Vault",
"sourceName": "contracts/vault/Vault.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner_",
"type": "address"
},
{
"internalType": "address",
"name": "entity_",
"type": "address"
},
{
"internalType": "address",
"name": "ledger_",
"type": "address"
},
{
"internalType": "address",
"name": "entityRegistry_",
"type": "address"
},
{
"internalType": "address",
"name": "collateralAdapter_",
"type": "address"
},
{
"internalType": "address",
"name": "eMoneyJoin_",
"type": "address"
}
],
"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": "address",
"name": "currency",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "borrower",
"type": "address"
}
],
"name": "Borrowed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "depositor",
"type": "address"
}
],
"name": "Deposited",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "currency",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "repayer",
"type": "address"
}
],
"name": "Repaid",
"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": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "withdrawer",
"type": "address"
}
],
"name": "Withdrawn",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "OPERATOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "borrow",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "collateralAdapter",
"outputs": [
{
"internalType": "contract ICollateralAdapter",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "debtTokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "depositTokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eMoneyJoin",
"outputs": [
{
"internalType": "contract IeMoneyJoin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "entity",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "entityRegistry",
"outputs": [
{
"internalType": "contract IRegulatedEntityRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getHealth",
"outputs": [
{
"internalType": "uint256",
"name": "healthRatio",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "collateralValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "debtValue",
"type": "uint256"
}
],
"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": "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": "ledger",
"outputs": [
{
"internalType": "contract ILedger",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"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": "address",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "repay",
"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": "address",
"name": "currency",
"type": "address"
},
{
"internalType": "address",
"name": "debtToken",
"type": "address"
}
],
"name": "setDebtToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "address",
"name": "depositToken",
"type": "address"
}
],
"name": "setDepositToken",
"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": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6080346200011857601f62001c9338819003918201601f19168301916001600160401b038311848410176200011d5780849260c09460405283398101031262000118578062000052620000fb9262000133565b90620000616020820162000133565b90620000706040820162000133565b906200007f6060820162000133565b916200009c60a0620000946080850162000133565b930162000133565b916001805560018060a01b0380948180948160018060a01b031999818c168b6002541617600255168960035416176003551687600454161760045516856005541617600555168360065416176006551690600754161760075562000148565b50620001073362000148565b50604051611ab99081620001da8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200011857565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff16620001d557818052816020526040822081835260205260408220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b509056fe6080604081815260049182361015610022575b505050361561002057600080fd5b005b600092833560e01c91826301ffc9a71461171457508163040d5dab146116bc5781630bb18d3f1461169357816322867d781461138b578163246786e214611362578163248a9ca3146113385781632f2ff15d1461130e57816336568abe146112c857816347e7ef2414610e365781634b8a35291461097b5781634e8a74621461092357816356397c35146108fb57816356bccf91146108c0578163640e7fd5146108325781636cdbbc66146108095781638da5cb5b146107e057816391d148541461079b578163965d598f14610760578163a217fddf14610745578163ae9c788a1461071c578163d547741f146106dd578163f3fef3a31461016c575063f5b541a61461012f5780610012565b34610168578160031936011261016857602090517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5080fd5b919050346106d957806003193601126106d957610187611767565b9060249182359361019661190a565b6101a1851515611793565b60055460035484516366e305fd60e01b81526001600160a01b03918216848201819052602095938316919086828a81865afa91821561045d578b926106a2575b5081610573575b506101f3915061182d565b82548551636610c76760e11b8152308186019081526001600160a01b0385166020820152918316918690829081906040010381855afa908115610569579089918b91610538575b50106104f65760608791875192838092634a83cf4960e01b825230898301525afa9081156104ec5790612af8918a916104bb575b501061046757908188939282169687855260088652818786205416908161033f575b50506006541691823b1561033b578551636ce5768960e11b8152309181019182526001600160a01b039092166020820152604081018890529091839183919082908490829060600103925af1801561033157610319575b50507fcbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687a91519384523393a36001805580f35b610322906117d4565b61032d5784386102e7565b8480fd5b84513d84823e3d90fd5b8380fd5b90919293945086516370a0823160e01b8152338682015286818381865afa90811561045d57908a918c91610427575b50106103db57509081899493923b1561032d578651632770a7eb60e21b815233858201908152602081018b90529091869183919082908490829060400103925af180156103d15790859115610290576103c6906117d4565b61033b578338610290565b87513d87823e3d90fd5b846022608492888a519362461bcd60e51b85528401528201527f5661756c743a20696e73756666696369656e74206465706f73697420746f6b656044820152616e7360f01b6064820152fd5b809250888092503d8311610456575b61044081836117fe565b81010312610451578990513861036e565b600080fd5b503d610436565b88513d8d823e3d90fd5b845162461bcd60e51b81528084018590526029818801527f5661756c743a207769746864726177616c20776f756c64206d616b65207661756044820152686c7420756e7361666560b81b6064820152608490fd5b6104dd915060603d6060116104e5575b6104d581836117fe565b810190611871565b50503861026e565b503d6104cb565b86513d8b823e3d90fd5b855162461bcd60e51b8152808501869052601e818901527f5661756c743a20696e73756666696369656e7420636f6c6c61746572616c00006044820152606490fd5b809250878092503d8311610562575b61055181836117fe565b81010312610451578890513861023a565b503d610547565b87513d8c823e3d90fd5b87516332f256cf60e11b81526001600160a01b03821687820190815233602082015290939192508790849081906040010381845afa92831561045d57908792918c94610666575b5083156105e3575b50505080156105d6575b6101f390386101e8565b50600254811633146105cc565b8851635b1b1e7960e11b81526001600160a01b0390921687830190815233602082015291935083918290819060400103915afa9081156104ec57899161062d575b508438806105c2565b90508481813d831161065f575b61064481836117fe565b8101031261065b5761065590611820565b38610624565b8880fd5b503d61063a565b8381949295503d831161069b575b61067e81836117fe565b81010312610697576106908792611820565b92386105ba565b8a80fd5b503d610674565b9091508681813d83116106d2575b6106ba81836117fe565b81010312610697576106cb90611820565b90386101e1565b503d6106b0565b8280fd5b919050346106d957806003193601126106d9576107189135610713600161070261177d565b9383875286602052862001546118e4565b6119ab565b5080f35b50503461016857816003193601126101685760075490516001600160a01b039091168152602090f35b50503461016857816003193601126101685751908152602090f35b505034610168576020366003190112610168576020916001600160a01b039082908261078a611767565b168152600985522054169051908152f35b9050346106d957816003193601126106d957816020936107b961177d565b92358152808552209060018060a01b0316600052825260ff81600020541690519015158152f35b50503461016857816003193601126101685760025490516001600160a01b039091168152602090f35b50503461016857816003193601126101685760035490516001600160a01b039091168152602090f35b919050346106d957826003193601126106d95781548151634a83cf4960e01b81523093810193909352606090839060249082906001600160a01b03165afa9081156108b75783606094938193610893575b5081519384526020840152820152f35b919350506108ae9150833d85116104e5576104d581836117fe565b91929038610883565b513d84823e3d90fd5b505034610168576020366003190112610168576020916001600160a01b03908290826108ea611767565b168152600885522054169051908152f35b9050346106d957826003193601126106d9575490516001600160a01b03909116815260209150f35b50503461016857806003193601126101685761093d611767565b61094561177d565b9161094e61188c565b6001600160a01b0391821684526009602052832080546001600160a01b0319169290911691909117905580f35b919050346106d957806003193601126106d957610996611767565b90602435926109a361190a565b6109ae841515611793565b60018060a01b039283600554169184600354169284516366e305fd60e01b815284838201526020948582602481865afa918215610569578a92610dff575b5081610cc6575b506109fe915061182d565b80548451639aac2c5360e01b8152308184019081526001600160a01b038516602082015260408101899052918716918690829081906060010381855afa80156104ec5789918a91610c8b575b508651907f5661756c743a20626f72726f77206e6f7420616c6c6f7765643a20000000000087830152603b820152603b8152606081019181831067ffffffffffffffff841117610c765782885215610c2357505090818893923b1561033b5785516302db19b960e31b8152308382019081526001600160a01b0385166020820152604081018a90529091859183919082908490829060600103925af18015610c1957908491610c05575b5050858216958684526009855280868520541680610ba8575b506007541691823b1561033b578551636361ddf360e11b81526001600160a01b039091169181019182523360208301526040820188905291839183919082908490829060600103925af1801561033157610b94575b50507f1d9e9e5baa9bc86c4e6ab882b0e168272e7772247ddaffccb90e8a3fe07271f191519384523393a36001805580f35b610b9d906117d4565b61032d578438610b62565b803b1561032d5786516340c10f1960e01b815233848201908152602081018b90529091869183919082908490829060400103925af180156103d157908591610bf1575b50610b0d565b610bfa906117d4565b61033b578338610beb565b610c0e906117d4565b6106d9578238610af4565b86513d86823e3d90fd5b62461bcd60e51b8252606481018690528051608482018190528693508a805b828110610c62575082820160a40152601f01601f19168101036044019150fd5b808691850160a48382015191015201610c42565b604185634e487b7160e01b6000525260246000fd5b809250878092503d8311610cbf575b610ca481836117fe565b8101031261065b5784610cb682611820565b91015138610a4a565b503d610c9a565b86516332f256cf60e11b81526001600160a01b03821685820190815233602082015290939192508690849081906040010381845afa92831561056957908692918b94610dc3575b508315610d36575b5050508015610d29575b6109fe90386109f3565b5060025485163314610d1f565b8751635b1b1e7960e11b81526001600160a01b0390921685830190815233602082015291935083918290819060400103915afa908115610db9578891610d80575b50833880610d15565b90508381813d8311610db2575b610d9781836117fe565b81010312610dae57610da890611820565b38610d77565b8780fd5b503d610d8d565b85513d8a823e3d90fd5b8381949295503d8311610df8575b610ddb81836117fe565b81010312610df457610ded8692611820565b9238610d0d565b8980fd5b503d610dd1565b9091508581813d8311610e2f575b610e1781836117fe565b81010312610df457610e2890611820565b90386109ec565b503d610e0d565b918091506003193601126106d957610e4c611767565b906024803593610e5a61190a565b610e65851515611793565b60055460035484516366e305fd60e01b81526001600160a01b0391821684820181905260209592938416919086828581865afa91821561045d578b92611291575b508161116a575b50610eb8915061182d565b85821695861591821561102457883403610feb575090889392915b60065483169115610fe557885b823b15610fe1578751638340f54960e01b8152308682019081526001600160a01b039093166020840152604083018b905292869284928391829060600103925af18015610c1957908491610fcd575b5086905260088452848320541680610f75575b5050507fb4e1304f97b5093610f51b33ddab6622388422e2dac138b0d32f93dcfbd39edf91519384523393a36001805580f35b803b156106d95784516340c10f1960e01b81523392810192835260208301889052918391839182908490829060400103925af1801561033157610fb9575b80610f42565b610fc2906117d4565b61032d578438610fb3565b610fd6906117d4565b6106d9578238610f2f565b8580fd5b84610ee0565b846015606492888a519362461bcd60e51b8552840152820152740acc2ead8e87440ecc2d8eaca40dad2e6dac2e8c6d605b1b6044820152fd5b346111315760065487516323b872dd60e01b888201908152338483019081529287166001600160a01b03166020840152604083018c905290918c9182918490606001039361107a601f19958681018352826117fe565b5190828d5af13d15611124573d67ffffffffffffffff811161111257906110be92916110af8a8c5194601f84011601846117fe565b82523d8d8a84013e5b8a611a20565b80518781151591826110f2575b505090506110de57509088939291610ed3565b8651635274afe760e01b8152808601899052fd5b838092935001031261069757866111099101611820565b158087386110cb565b634e487b7160e01b8d5260418852838dfd5b6110be91506060906110b8565b846015606492888a519362461bcd60e51b8552840152820152740acc2ead8e87440eadccaf0e0cac6e8cac8408aa89605b1b6044820152fd5b87516332f256cf60e11b81526001600160a01b03821687820190815233602082015290939192508790849081906040010381845afa92831561045d57908792918c94611259575b5083156111da575b50505080156111cd575b610eb89038610ead565b50600254821633146111c3565b8851635b1b1e7960e11b81526001600160a01b0390921687830190815233602082015291935083918290819060400103915afa9081156104ec578991611224575b508438806111b9565b90508481813d8311611252575b61123b81836117fe565b8101031261065b5761124c90611820565b3861121b565b503d611231565b8381949295503d831161128a575b61127181836117fe565b81010312610697576112838792611820565b92386111b1565b503d611267565b9091508681813d83116112c1575b6112a981836117fe565b81010312610697576112ba90611820565b9038610ea6565b503d61129f565b8383346101685780600319360112610168576112e261177d565b90336001600160a01b038316036112ff57506107189192356119ab565b5163334bd91960e11b81528390fd5b919050346106d957806003193601126106d9576107189135611333600161070261177d565b61192d565b9050346106d95760203660031901126106d957816020936001923581528085522001549051908152f35b50503461016857816003193601126101685760065490516001600160a01b039091168152602090f35b9050346106d957816003193601126106d9576113a5611767565b916024356113b161190a565b6113bc811515611793565b8254825163d449300d60e01b8152308186019081526001600160a01b038781166020808401919091529096909490939091859184918290036040019082908a165afa918215610db9578892611664575b50811561163057856007541688813b1561162d578651633dae446f60e21b81526001600160a01b038a16868201908152336020820152604081018590529092839182908490829060600103925af180156104ec5761161a575b50818111156116125750945b81548516600160ff1b87146115ff5790818893923b1561033b5785516302db19b960e31b8152308482019081526001600160a01b038416602082015289860360408201529091859183919082908490829060600103925af18015610c195787929185916115e6575b505016948583526009845284832054169081611523575b5050507fcb27c28934bd99650d5817da0353c4376feb6217921aed58c9747c2c9938dadf91519384523393a36001805580f35b84516370a0823160e01b815233828201528481602481865afa908115610c195784916115b5575b50808811156115ae575b823b1561033b578551632770a7eb60e21b815233928101928352602083019190915291839183919082908490829060400103925af180156103315761159a575b806114f0565b6115a3906117d4565b61032d578438611594565b5086611554565b809450858092503d83116115df575b6115ce81836117fe565b81010312610451578792513861154a565b503d6115c4565b6115f2919293506117d4565b6106d957859083386114d9565b634e487b7160e01b885260118352602488fd5b905094611471565b611626909891986117d4565b9638611465565b80fd5b845162461bcd60e51b8152808401859052600e60248201526d15985d5b1d0e881b9bc81919589d60921b6044820152606490fd5b9091508381813d831161168c575b61167c81836117fe565b81010312610dae5751903861140c565b503d611672565b50503461016857816003193601126101685760055490516001600160a01b039091168152602090f35b5050346101685780600319360112610168576116d6611767565b6116de61177d565b916116e761188c565b6001600160a01b0391821684526008602052832080546001600160a01b0319169290911691909117905580f35b8491346106d95760203660031901126106d9573563ffffffff60e01b81168091036106d95760209250637965db0b60e01b8114908115611756575b5015158152f35b6301ffc9a760e01b1490508361174f565b600435906001600160a01b038216820361045157565b602435906001600160a01b038216820361045157565b1561179a57565b60405162461bcd60e51b815260206004820152601260248201527115985d5b1d0e881e995c9bc8185b5bdd5b9d60721b6044820152606490fd5b67ffffffffffffffff81116117e857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176117e857604052565b5190811515820361045157565b1561183457565b60405162461bcd60e51b815260206004820152601560248201527415985d5b1d0e881b9bdd08185d5d1a1bdc9a5e9959605a1b6044820152606490fd5b90816060910312610451578051916040602083015192015190565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156118c65750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600060205260406000203360005260205260ff60406000205416156118c65750565b60026001541461191b576002600155565b604051633ee5aeb560e01b8152600490fd5b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146119a657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146119a65780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b90611a475750805115611a3557805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611a7a575b611a58575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611a5056fea264697066735822122073a72b04241c61b55d0fcde8b18c0cfcfe69ddb55fd0825f750a716fb88c93e764736f6c63430008160033",
"deployedBytecode": "0x6080604081815260049182361015610022575b505050361561002057600080fd5b005b600092833560e01c91826301ffc9a71461171457508163040d5dab146116bc5781630bb18d3f1461169357816322867d781461138b578163246786e214611362578163248a9ca3146113385781632f2ff15d1461130e57816336568abe146112c857816347e7ef2414610e365781634b8a35291461097b5781634e8a74621461092357816356397c35146108fb57816356bccf91146108c0578163640e7fd5146108325781636cdbbc66146108095781638da5cb5b146107e057816391d148541461079b578163965d598f14610760578163a217fddf14610745578163ae9c788a1461071c578163d547741f146106dd578163f3fef3a31461016c575063f5b541a61461012f5780610012565b34610168578160031936011261016857602090517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b5080fd5b919050346106d957806003193601126106d957610187611767565b9060249182359361019661190a565b6101a1851515611793565b60055460035484516366e305fd60e01b81526001600160a01b03918216848201819052602095938316919086828a81865afa91821561045d578b926106a2575b5081610573575b506101f3915061182d565b82548551636610c76760e11b8152308186019081526001600160a01b0385166020820152918316918690829081906040010381855afa908115610569579089918b91610538575b50106104f65760608791875192838092634a83cf4960e01b825230898301525afa9081156104ec5790612af8918a916104bb575b501061046757908188939282169687855260088652818786205416908161033f575b50506006541691823b1561033b578551636ce5768960e11b8152309181019182526001600160a01b039092166020820152604081018890529091839183919082908490829060600103925af1801561033157610319575b50507fcbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687a91519384523393a36001805580f35b610322906117d4565b61032d5784386102e7565b8480fd5b84513d84823e3d90fd5b8380fd5b90919293945086516370a0823160e01b8152338682015286818381865afa90811561045d57908a918c91610427575b50106103db57509081899493923b1561032d578651632770a7eb60e21b815233858201908152602081018b90529091869183919082908490829060400103925af180156103d15790859115610290576103c6906117d4565b61033b578338610290565b87513d87823e3d90fd5b846022608492888a519362461bcd60e51b85528401528201527f5661756c743a20696e73756666696369656e74206465706f73697420746f6b656044820152616e7360f01b6064820152fd5b809250888092503d8311610456575b61044081836117fe565b81010312610451578990513861036e565b600080fd5b503d610436565b88513d8d823e3d90fd5b845162461bcd60e51b81528084018590526029818801527f5661756c743a207769746864726177616c20776f756c64206d616b65207661756044820152686c7420756e7361666560b81b6064820152608490fd5b6104dd915060603d6060116104e5575b6104d581836117fe565b810190611871565b50503861026e565b503d6104cb565b86513d8b823e3d90fd5b855162461bcd60e51b8152808501869052601e818901527f5661756c743a20696e73756666696369656e7420636f6c6c61746572616c00006044820152606490fd5b809250878092503d8311610562575b61055181836117fe565b81010312610451578890513861023a565b503d610547565b87513d8c823e3d90fd5b87516332f256cf60e11b81526001600160a01b03821687820190815233602082015290939192508790849081906040010381845afa92831561045d57908792918c94610666575b5083156105e3575b50505080156105d6575b6101f390386101e8565b50600254811633146105cc565b8851635b1b1e7960e11b81526001600160a01b0390921687830190815233602082015291935083918290819060400103915afa9081156104ec57899161062d575b508438806105c2565b90508481813d831161065f575b61064481836117fe565b8101031261065b5761065590611820565b38610624565b8880fd5b503d61063a565b8381949295503d831161069b575b61067e81836117fe565b81010312610697576106908792611820565b92386105ba565b8a80fd5b503d610674565b9091508681813d83116106d2575b6106ba81836117fe565b81010312610697576106cb90611820565b90386101e1565b503d6106b0565b8280fd5b919050346106d957806003193601126106d9576107189135610713600161070261177d565b9383875286602052862001546118e4565b6119ab565b5080f35b50503461016857816003193601126101685760075490516001600160a01b039091168152602090f35b50503461016857816003193601126101685751908152602090f35b505034610168576020366003190112610168576020916001600160a01b039082908261078a611767565b168152600985522054169051908152f35b9050346106d957816003193601126106d957816020936107b961177d565b92358152808552209060018060a01b0316600052825260ff81600020541690519015158152f35b50503461016857816003193601126101685760025490516001600160a01b039091168152602090f35b50503461016857816003193601126101685760035490516001600160a01b039091168152602090f35b919050346106d957826003193601126106d95781548151634a83cf4960e01b81523093810193909352606090839060249082906001600160a01b03165afa9081156108b75783606094938193610893575b5081519384526020840152820152f35b919350506108ae9150833d85116104e5576104d581836117fe565b91929038610883565b513d84823e3d90fd5b505034610168576020366003190112610168576020916001600160a01b03908290826108ea611767565b168152600885522054169051908152f35b9050346106d957826003193601126106d9575490516001600160a01b03909116815260209150f35b50503461016857806003193601126101685761093d611767565b61094561177d565b9161094e61188c565b6001600160a01b0391821684526009602052832080546001600160a01b0319169290911691909117905580f35b919050346106d957806003193601126106d957610996611767565b90602435926109a361190a565b6109ae841515611793565b60018060a01b039283600554169184600354169284516366e305fd60e01b815284838201526020948582602481865afa918215610569578a92610dff575b5081610cc6575b506109fe915061182d565b80548451639aac2c5360e01b8152308184019081526001600160a01b038516602082015260408101899052918716918690829081906060010381855afa80156104ec5789918a91610c8b575b508651907f5661756c743a20626f72726f77206e6f7420616c6c6f7765643a20000000000087830152603b820152603b8152606081019181831067ffffffffffffffff841117610c765782885215610c2357505090818893923b1561033b5785516302db19b960e31b8152308382019081526001600160a01b0385166020820152604081018a90529091859183919082908490829060600103925af18015610c1957908491610c05575b5050858216958684526009855280868520541680610ba8575b506007541691823b1561033b578551636361ddf360e11b81526001600160a01b039091169181019182523360208301526040820188905291839183919082908490829060600103925af1801561033157610b94575b50507f1d9e9e5baa9bc86c4e6ab882b0e168272e7772247ddaffccb90e8a3fe07271f191519384523393a36001805580f35b610b9d906117d4565b61032d578438610b62565b803b1561032d5786516340c10f1960e01b815233848201908152602081018b90529091869183919082908490829060400103925af180156103d157908591610bf1575b50610b0d565b610bfa906117d4565b61033b578338610beb565b610c0e906117d4565b6106d9578238610af4565b86513d86823e3d90fd5b62461bcd60e51b8252606481018690528051608482018190528693508a805b828110610c62575082820160a40152601f01601f19168101036044019150fd5b808691850160a48382015191015201610c42565b604185634e487b7160e01b6000525260246000fd5b809250878092503d8311610cbf575b610ca481836117fe565b8101031261065b5784610cb682611820565b91015138610a4a565b503d610c9a565b86516332f256cf60e11b81526001600160a01b03821685820190815233602082015290939192508690849081906040010381845afa92831561056957908692918b94610dc3575b508315610d36575b5050508015610d29575b6109fe90386109f3565b5060025485163314610d1f565b8751635b1b1e7960e11b81526001600160a01b0390921685830190815233602082015291935083918290819060400103915afa908115610db9578891610d80575b50833880610d15565b90508381813d8311610db2575b610d9781836117fe565b81010312610dae57610da890611820565b38610d77565b8780fd5b503d610d8d565b85513d8a823e3d90fd5b8381949295503d8311610df8575b610ddb81836117fe565b81010312610df457610ded8692611820565b9238610d0d565b8980fd5b503d610dd1565b9091508581813d8311610e2f575b610e1781836117fe565b81010312610df457610e2890611820565b90386109ec565b503d610e0d565b918091506003193601126106d957610e4c611767565b906024803593610e5a61190a565b610e65851515611793565b60055460035484516366e305fd60e01b81526001600160a01b0391821684820181905260209592938416919086828581865afa91821561045d578b92611291575b508161116a575b50610eb8915061182d565b85821695861591821561102457883403610feb575090889392915b60065483169115610fe557885b823b15610fe1578751638340f54960e01b8152308682019081526001600160a01b039093166020840152604083018b905292869284928391829060600103925af18015610c1957908491610fcd575b5086905260088452848320541680610f75575b5050507fb4e1304f97b5093610f51b33ddab6622388422e2dac138b0d32f93dcfbd39edf91519384523393a36001805580f35b803b156106d95784516340c10f1960e01b81523392810192835260208301889052918391839182908490829060400103925af1801561033157610fb9575b80610f42565b610fc2906117d4565b61032d578438610fb3565b610fd6906117d4565b6106d9578238610f2f565b8580fd5b84610ee0565b846015606492888a519362461bcd60e51b8552840152820152740acc2ead8e87440ecc2d8eaca40dad2e6dac2e8c6d605b1b6044820152fd5b346111315760065487516323b872dd60e01b888201908152338483019081529287166001600160a01b03166020840152604083018c905290918c9182918490606001039361107a601f19958681018352826117fe565b5190828d5af13d15611124573d67ffffffffffffffff811161111257906110be92916110af8a8c5194601f84011601846117fe565b82523d8d8a84013e5b8a611a20565b80518781151591826110f2575b505090506110de57509088939291610ed3565b8651635274afe760e01b8152808601899052fd5b838092935001031261069757866111099101611820565b158087386110cb565b634e487b7160e01b8d5260418852838dfd5b6110be91506060906110b8565b846015606492888a519362461bcd60e51b8552840152820152740acc2ead8e87440eadccaf0e0cac6e8cac8408aa89605b1b6044820152fd5b87516332f256cf60e11b81526001600160a01b03821687820190815233602082015290939192508790849081906040010381845afa92831561045d57908792918c94611259575b5083156111da575b50505080156111cd575b610eb89038610ead565b50600254821633146111c3565b8851635b1b1e7960e11b81526001600160a01b0390921687830190815233602082015291935083918290819060400103915afa9081156104ec578991611224575b508438806111b9565b90508481813d8311611252575b61123b81836117fe565b8101031261065b5761124c90611820565b3861121b565b503d611231565b8381949295503d831161128a575b61127181836117fe565b81010312610697576112838792611820565b92386111b1565b503d611267565b9091508681813d83116112c1575b6112a981836117fe565b81010312610697576112ba90611820565b9038610ea6565b503d61129f565b8383346101685780600319360112610168576112e261177d565b90336001600160a01b038316036112ff57506107189192356119ab565b5163334bd91960e11b81528390fd5b919050346106d957806003193601126106d9576107189135611333600161070261177d565b61192d565b9050346106d95760203660031901126106d957816020936001923581528085522001549051908152f35b50503461016857816003193601126101685760065490516001600160a01b039091168152602090f35b9050346106d957816003193601126106d9576113a5611767565b916024356113b161190a565b6113bc811515611793565b8254825163d449300d60e01b8152308186019081526001600160a01b038781166020808401919091529096909490939091859184918290036040019082908a165afa918215610db9578892611664575b50811561163057856007541688813b1561162d578651633dae446f60e21b81526001600160a01b038a16868201908152336020820152604081018590529092839182908490829060600103925af180156104ec5761161a575b50818111156116125750945b81548516600160ff1b87146115ff5790818893923b1561033b5785516302db19b960e31b8152308482019081526001600160a01b038416602082015289860360408201529091859183919082908490829060600103925af18015610c195787929185916115e6575b505016948583526009845284832054169081611523575b5050507fcb27c28934bd99650d5817da0353c4376feb6217921aed58c9747c2c9938dadf91519384523393a36001805580f35b84516370a0823160e01b815233828201528481602481865afa908115610c195784916115b5575b50808811156115ae575b823b1561033b578551632770a7eb60e21b815233928101928352602083019190915291839183919082908490829060400103925af180156103315761159a575b806114f0565b6115a3906117d4565b61032d578438611594565b5086611554565b809450858092503d83116115df575b6115ce81836117fe565b81010312610451578792513861154a565b503d6115c4565b6115f2919293506117d4565b6106d957859083386114d9565b634e487b7160e01b885260118352602488fd5b905094611471565b611626909891986117d4565b9638611465565b80fd5b845162461bcd60e51b8152808401859052600e60248201526d15985d5b1d0e881b9bc81919589d60921b6044820152606490fd5b9091508381813d831161168c575b61167c81836117fe565b81010312610dae5751903861140c565b503d611672565b50503461016857816003193601126101685760055490516001600160a01b039091168152602090f35b5050346101685780600319360112610168576116d6611767565b6116de61177d565b916116e761188c565b6001600160a01b0391821684526008602052832080546001600160a01b0319169290911691909117905580f35b8491346106d95760203660031901126106d9573563ffffffff60e01b81168091036106d95760209250637965db0b60e01b8114908115611756575b5015158152f35b6301ffc9a760e01b1490508361174f565b600435906001600160a01b038216820361045157565b602435906001600160a01b038216820361045157565b1561179a57565b60405162461bcd60e51b815260206004820152601260248201527115985d5b1d0e881e995c9bc8185b5bdd5b9d60721b6044820152606490fd5b67ffffffffffffffff81116117e857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176117e857604052565b5190811515820361045157565b1561183457565b60405162461bcd60e51b815260206004820152601560248201527415985d5b1d0e881b9bdd08185d5d1a1bdc9a5e9959605a1b6044820152606490fd5b90816060910312610451578051916040602083015192015190565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156118c65750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600060205260406000203360005260205260ff60406000205416156118c65750565b60026001541461191b576002600155565b604051633ee5aeb560e01b8152600490fd5b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416156000146119a657808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146119a65780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b90611a475750805115611a3557805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611a7a575b611a58575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15611a5056fea264697066735822122073a72b04241c61b55d0fcde8b18c0cfcfe69ddb55fd0825f750a716fb88c93e764736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}