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

635 lines
35 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "PriceFeedKeeper",
"sourceName": "contracts/reserve/PriceFeedKeeper.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "address",
"name": "oraclePriceFeed_",
"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": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "AssetTracked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "AssetUntracked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMax",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMax",
"type": "uint256"
}
],
"name": "MaxUpdatesPerCallChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "assets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "PriceFeedsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldInterval",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newInterval",
"type": "uint256"
}
],
"name": "UpdateIntervalChanged",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "KEEPER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPKEEPER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "checkUpkeep",
"outputs": [
{
"internalType": "bool",
"name": "updateNeeded",
"type": "bool"
},
{
"internalType": "address[]",
"name": "assets",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasBuffer",
"outputs": [
{
"internalType": "uint256",
"name": "",
"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": [],
"name": "getTrackedAssets",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getUpkeepGasEstimate",
"outputs": [
{
"internalType": "uint256",
"name": "gasEstimate",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isTracked",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "lastUpdateTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxUpdatesPerCall",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "needsUpdate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oraclePriceFeed",
"outputs": [
{
"internalType": "contract OraclePriceFeed",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "performUpkeep",
"outputs": [
{
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"internalType": "address[]",
"name": "updatedAssets",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"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": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "setMaxUpdatesPerCall",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oraclePriceFeed_",
"type": "address"
}
],
"name": "setOraclePriceFeed",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "interval",
"type": "uint256"
}
],
"name": "setUpdateInterval",
"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"
}
],
"name": "trackAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "trackedAssets",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "untrackAsset",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "assets",
"type": "address[]"
}
],
"name": "updateAssets",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateInterval",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608034620000c257601f620017a838819003918201601f19168301916001600160401b03831184841017620000c7578084926040948552833981010312620000c257620000916200005e60206200005684620000dd565b9301620000dd565b9160018055601e600555600a60075561c3506008556200007e81620000f2565b506200008a8162000172565b5062000214565b50600280546001600160a01b0319166001600160a01b03929092169190911790556040516114d69081620002b28239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620000c257565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200016e57818052816020526040822081835260205260408220600160ff198254161790553391600080516020620017888339815191528180a4600190565b5090565b6001600160a01b031660008181527f0363fc6b1c9d3a5e0ab0c2ddc08deb0f30108829db06e84f370d2858ffe78c4660205260408120549091907ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab9060ff166200020f57808352826020526040832082845260205260408320600160ff1982541617905560008051602062001788833981519152339380a4600190565b505090565b6001600160a01b031660008181527f7b9cfcd80c34284e1e317e6a7922df060ded849fe6c95b6b7bc8dbd6f085447960205260408120549091907f68e9e1a1a294fefbfbf8f57edd22025faa9a9f634abfb07c3da4e23117d53b619060ff166200020f57808352826020526040832082845260205260408320600160ff1982541617905560008051602062001788833981519152339380a460019056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c4157508163023d952914610c1257816305339a5d14610b0d5781631eb5b69914610abc578163248a9ca314610a925781632649b43914610a735781632ce9aead14610a3b5781632f2ff15d14610a11578163364bc15a146109d657816336568abe146109905781633fdefa6e146109715781636e4d243a146109325781637124c6831461089157816375d38071146108685781638801f9c7146106c357816391051a4f1461045757816391d148541461041257816395c7285714610371578163a13abdad14610346578163a217fddf1461032b578163a8c94d1b146102ee578163c4b9737014610255578163ca82f63814610231578163d547741f146101f2578163d820c67e146101b7578163f715d99c1461016f575063fd2c80ae1461014e57600080fd5b3461016b578160031936011261016b576020906005549051908152f35b5080fd5b9050346101b35760203660031901126101b35735916003548310156101b0575061019a602092610d1e565b60018060a01b0391549060031b1c169051908152f35b80fd5b8280fd5b50503461016b578160031936011261016b57602090517f68e9e1a1a294fefbfbf8f57edd22025faa9a9f634abfb07c3da4e23117d53b618152f35b919050346101b357806003193601126101b35761022d91356102286001610217610caf565b938387528660205286200154611364565b611408565b5080f35b50503461016b578160031936011261016b5760209061024e6111a0565b9051908152f35b8284346101b057806003193601126101b0578151918291600354808552602080950194600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b92905b8282106102ce576102ca86866102b8828b0383610dfd565b51918291602083526020830190610cc5565b0390f35b83546001600160a01b0316875295860195600193840193909101906102a0565b9050346101b35760203660031901126101b35760209260ff918391906001600160a01b0361031a610c94565b168252855220541690519015158152f35b50503461016b578160031936011261016b5751908152602090f35b50503461016b578160031936011261016b576102ca906103646110ce565b9290915192839283610d02565b9050346101b35760203660031901126101b35780359061038f6112ce565b81156103cf5750907fcfaee70e811b571d71dc6fe40bd4ae39b489ed342f5ddb4a71912bebcdf5b8e891600754908060075582519182526020820152a180f35b606490602084519162461bcd60e51b8352820152601960248201527f5072696365466565644b65657065723a207a65726f206d6178000000000000006044820152fd5b9050346101b357816003193601126101b35781602093610430610caf565b92358152808552209060018060a01b0316600052825260ff81600020541690519015158152f35b8391503461016b57602092836003193601126101b35781359367ffffffffffffffff928386116106bf57366023870112156106bf57858101359384116106bf576024808701968136918760051b0101116106bb576104b3611308565b6104bb61147d565b841561067b57600754851161063c57855b8581106105c057506002546001600160a01b039290831690813b156105bc57855163ad85bdff60e01b815290810185905291879183918290849082906105159082018c8f611085565b03925af180156105b25761059f575b50845b8481106105765750506105667f57f6eea37015fd464f4614c9667f094618731bd3cf2f4f8887e7487bee22f4fd94958351948486958652850191611085565b9042908301520390a16001805580f35b808261058d610588600194898c611061565b611071565b16875260068452428588205501610527565b6105ab90959195610db7565b9386610524565b84513d88823e3d90fd5b8780fd5b6001600160a01b036105d661058883898c611061565b16875282845260ff8588205416156105f0576001016104cc565b5060229192608494519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a206173736574206e6f7420747261636b604482015261195960f21b6064820152fd5b916064928185519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a20746f6f206d616e79206173736574736044820152fd5b601c9192606494519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a20656d707479206172726179000000006044820152fd5b8580fd5b8480fd5b905082346101b05760203660031901126101b0576106df610c94565b926106e8611254565b6001600160a01b0393841680835260208490528183205490919060ff161561082657825b60038054908183101561081957848861072485610d1e565b905490841b1c161461073a57505060010161070c565b909691600096939495961997888101908111610806579061076e8461076161078c94610d1e565b905490861b1c1691610d1e565b90919060018060a01b038084549260031b9316831b921b1916179055565b80549687156107f357869796959601916107a583610d1e565b9091825491841b1b19169055555b83835260205280822060ff19815416905560066020528120557f5f4370c5fc29afccb9dfad0484b85bb73a992213ed5134fb87f9607b0d9b91d18280a280f35b634e487b7160e01b875260318452602487fd5b634e487b7160e01b885260118552602488fd5b50505090928294506107b3565b5162461bcd60e51b8152602081850152601c60248201527f5072696365466565644b65657065723a206e6f7420747261636b6564000000006044820152606490fd5b50503461016b578160031936011261016b5760025490516001600160a01b039091168152602090f35b9050346101b35760203660031901126101b3578035906108af6112ce565b81156108ef5750907f906b7c716abe77ce683d8fb36d3428d70d84ae296249efe4691b95ebe3242a8891600554908060055582519182526020820152a180f35b606490602084519162461bcd60e51b8352820152601e60248201527f5072696365466565644b65657065723a207a65726f20696e74657276616c00006044820152fd5b50503461016b578160031936011261016b576102ca90610950611308565b61095861147d565b610960610ea2565b929091600180555192839283610d02565b50503461016b578160031936011261016b576020906008549051908152f35b83833461016b578060031936011261016b576109aa610caf565b90336001600160a01b038316036109c7575061022d919235611408565b5163334bd91960e11b81528390fd5b50503461016b578160031936011261016b57602090517ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab8152f35b919050346101b357806003193601126101b35761022d9135610a366001610217610caf565b61138a565b50503461016b57602036600319011261016b5760209181906001600160a01b03610a63610c94565b1681526006845220549051908152f35b50503461016b578160031936011261016b576020906007549051908152f35b9050346101b35760203660031901126101b357816020936001923581528085522001549051908152f35b83346101b05760203660031901126101b057610ad6610c94565b610ade6112ce565b6001600160a01b0316610af2811515610d6b565b6bffffffffffffffffffffffff60a01b600254161760025580f35b919050346101b35760203660031901126101b357610b29610c94565b91610b32611254565b6001600160a01b03831692610b48841515610d6b565b8385528160205260ff8386205416610bcf5760035468010000000000000000811015610bbc579061076e826001610b829401600355610d1e565b8284526020528220805460ff191660011790557f4a2ec0919005accc67763a7c56bf461aa9766aa2bc0e52dc6b5e15dc41e6f3cb8280a280f35b634e487b7160e01b865260418352602486fd5b506020606492519162461bcd60e51b8352820152602060248201527f5072696365466565644b65657065723a20616c726561647920747261636b65646044820152fd5b50503461016b57602036600319011261016b57602090610c38610c33610c94565b6111f6565b90519015158152f35b8491346101b35760203660031901126101b3573563ffffffff60e01b81168091036101b35760209250637965db0b60e01b8114908115610c83575b5015158152f35b6301ffc9a760e01b14905083610c7c565b600435906001600160a01b0382168203610caa57565b600080fd5b602435906001600160a01b0382168203610caa57565b90815180825260208080930193019160005b828110610ce5575050505090565b83516001600160a01b031685529381019392810192600101610cd7565b604090610d1b9392151581528160208201520190610cc5565b90565b600354811015610d555760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b634e487b7160e01b600052603260045260246000fd5b15610d7257565b60405162461bcd60e51b815260206004820152601d60248201527f5072696365466565644b65657065723a207a65726f20616464726573730000006044820152606490fd5b67ffffffffffffffff8111610dcb57604052565b634e487b7160e01b600052604160045260246000fd5b6020810190811067ffffffffffffffff821117610dcb57604052565b90601f8019910116810190811067ffffffffffffffff821117610dcb57604052565b67ffffffffffffffff8111610dcb5760051b60200190565b90610e4182610e1f565b610e4e6040519182610dfd565b8281528092610e5f601f1991610e1f565b0190602036910137565b8051821015610d555760209160051b010190565b6000198114610e8c5760010190565b634e487b7160e01b600052601160045260246000fd5b60006003805491610eb283610e37565b928192825b828110611002575050508115610fe557610ed082610e37565b92815b838110610fbd5750506002546001600160a01b03908116803b156101b35760409160405163ad85bdff60e01b8152848160209460206004830152818381610f1e8d6024830190610cc5565b03925af19081610faa575b50610f3657505050905091565b835b858110610f89575050505050507f57f6eea37015fd464f4614c9667f094618731bd3cf2f4f8887e7487bee22f4fd6040516040815280610f7b6040820185610cc5565b4260208301520390a1600191565b8082610f976001938a610e69565b5116865260068452428587205501610f38565b610fb690959195610db7565b9338610f29565b6001906001600160a01b03610fd28285610e69565b5116610fde8288610e69565b5201610ed3565b9291505060405191610ff683610de1565b80835236813760019190565b61100b81610d1e565b905490831b1c6001600160a01b0316611023816111f6565b80611056575b611037575b50600101610eb7565b8561104f91611049600194988a610e69565b52610e7d565b949061102e565b506007548610611029565b9190811015610d555760051b0190565b356001600160a01b0381168103610caa5790565b9190808252602080920192916000805b8382106110a457505050505090565b9091929394853560018060a01b0381168091036101b3578152830194830193929160010190611095565b600390600354916110de83610e37565b92600091825b8281106111585750508115905061113b576110fe81610e37565b9060005b818110611113575050909150600191565b6001906001600160a01b036111288288610e69565b51166111348286610e69565b5201611102565b50905060405161114a81610de1565b600081526000368137600091565b61116181610d1e565b905490831b1c6001600160a01b0316611179816111f6565b611187575b506001016110e4565b8461119991611049600194978a610e69565b939061117e565b6111a86110ce565b901580156111ed575b6111e7575161753090818102918183041490151715610e8c5761c35081810191828211610e8c576008540101809111610e8c5790565b50600090565b508051156111b1565b6001600160a01b031660009081526004602052604081205460ff1615610d1b5760066020526040812054801561124d574203904282116112395750600554111590565b634e487b7160e01b81526011600452602490fd5b5050600190565b3360009081527f7b9cfcd80c34284e1e317e6a7922df060ded849fe6c95b6b7bc8dbd6f085447960205260409020547f68e9e1a1a294fefbfbf8f57edd22025faa9a9f634abfb07c3da4e23117d53b619060ff16156112b05750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156112b05750565b3360009081527f0363fc6b1c9d3a5e0ab0c2ddc08deb0f30108829db06e84f370d2858ffe78c4660205260409020547ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab9060ff16156112b05750565b80600052600060205260406000203360005260205260ff60406000205416156112b05750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461140357808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146114035780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60026001541461148e576002600155565b604051633ee5aeb560e01b8152600490fdfea26469706673582212203852addcb85fec75b62d700c4b6ceacdf3933d325dba2234a53f68d5046f8d6664736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610c4157508163023d952914610c1257816305339a5d14610b0d5781631eb5b69914610abc578163248a9ca314610a925781632649b43914610a735781632ce9aead14610a3b5781632f2ff15d14610a11578163364bc15a146109d657816336568abe146109905781633fdefa6e146109715781636e4d243a146109325781637124c6831461089157816375d38071146108685781638801f9c7146106c357816391051a4f1461045757816391d148541461041257816395c7285714610371578163a13abdad14610346578163a217fddf1461032b578163a8c94d1b146102ee578163c4b9737014610255578163ca82f63814610231578163d547741f146101f2578163d820c67e146101b7578163f715d99c1461016f575063fd2c80ae1461014e57600080fd5b3461016b578160031936011261016b576020906005549051908152f35b5080fd5b9050346101b35760203660031901126101b35735916003548310156101b0575061019a602092610d1e565b60018060a01b0391549060031b1c169051908152f35b80fd5b8280fd5b50503461016b578160031936011261016b57602090517f68e9e1a1a294fefbfbf8f57edd22025faa9a9f634abfb07c3da4e23117d53b618152f35b919050346101b357806003193601126101b35761022d91356102286001610217610caf565b938387528660205286200154611364565b611408565b5080f35b50503461016b578160031936011261016b5760209061024e6111a0565b9051908152f35b8284346101b057806003193601126101b0578151918291600354808552602080950194600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b92905b8282106102ce576102ca86866102b8828b0383610dfd565b51918291602083526020830190610cc5565b0390f35b83546001600160a01b0316875295860195600193840193909101906102a0565b9050346101b35760203660031901126101b35760209260ff918391906001600160a01b0361031a610c94565b168252855220541690519015158152f35b50503461016b578160031936011261016b5751908152602090f35b50503461016b578160031936011261016b576102ca906103646110ce565b9290915192839283610d02565b9050346101b35760203660031901126101b35780359061038f6112ce565b81156103cf5750907fcfaee70e811b571d71dc6fe40bd4ae39b489ed342f5ddb4a71912bebcdf5b8e891600754908060075582519182526020820152a180f35b606490602084519162461bcd60e51b8352820152601960248201527f5072696365466565644b65657065723a207a65726f206d6178000000000000006044820152fd5b9050346101b357816003193601126101b35781602093610430610caf565b92358152808552209060018060a01b0316600052825260ff81600020541690519015158152f35b8391503461016b57602092836003193601126101b35781359367ffffffffffffffff928386116106bf57366023870112156106bf57858101359384116106bf576024808701968136918760051b0101116106bb576104b3611308565b6104bb61147d565b841561067b57600754851161063c57855b8581106105c057506002546001600160a01b039290831690813b156105bc57855163ad85bdff60e01b815290810185905291879183918290849082906105159082018c8f611085565b03925af180156105b25761059f575b50845b8481106105765750506105667f57f6eea37015fd464f4614c9667f094618731bd3cf2f4f8887e7487bee22f4fd94958351948486958652850191611085565b9042908301520390a16001805580f35b808261058d610588600194898c611061565b611071565b16875260068452428588205501610527565b6105ab90959195610db7565b9386610524565b84513d88823e3d90fd5b8780fd5b6001600160a01b036105d661058883898c611061565b16875282845260ff8588205416156105f0576001016104cc565b5060229192608494519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a206173736574206e6f7420747261636b604482015261195960f21b6064820152fd5b916064928185519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a20746f6f206d616e79206173736574736044820152fd5b601c9192606494519362461bcd60e51b85528401528201527f5072696365466565644b65657065723a20656d707479206172726179000000006044820152fd5b8580fd5b8480fd5b905082346101b05760203660031901126101b0576106df610c94565b926106e8611254565b6001600160a01b0393841680835260208490528183205490919060ff161561082657825b60038054908183101561081957848861072485610d1e565b905490841b1c161461073a57505060010161070c565b909691600096939495961997888101908111610806579061076e8461076161078c94610d1e565b905490861b1c1691610d1e565b90919060018060a01b038084549260031b9316831b921b1916179055565b80549687156107f357869796959601916107a583610d1e565b9091825491841b1b19169055555b83835260205280822060ff19815416905560066020528120557f5f4370c5fc29afccb9dfad0484b85bb73a992213ed5134fb87f9607b0d9b91d18280a280f35b634e487b7160e01b875260318452602487fd5b634e487b7160e01b885260118552602488fd5b50505090928294506107b3565b5162461bcd60e51b8152602081850152601c60248201527f5072696365466565644b65657065723a206e6f7420747261636b6564000000006044820152606490fd5b50503461016b578160031936011261016b5760025490516001600160a01b039091168152602090f35b9050346101b35760203660031901126101b3578035906108af6112ce565b81156108ef5750907f906b7c716abe77ce683d8fb36d3428d70d84ae296249efe4691b95ebe3242a8891600554908060055582519182526020820152a180f35b606490602084519162461bcd60e51b8352820152601e60248201527f5072696365466565644b65657065723a207a65726f20696e74657276616c00006044820152fd5b50503461016b578160031936011261016b576102ca90610950611308565b61095861147d565b610960610ea2565b929091600180555192839283610d02565b50503461016b578160031936011261016b576020906008549051908152f35b83833461016b578060031936011261016b576109aa610caf565b90336001600160a01b038316036109c7575061022d919235611408565b5163334bd91960e11b81528390fd5b50503461016b578160031936011261016b57602090517ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab8152f35b919050346101b357806003193601126101b35761022d9135610a366001610217610caf565b61138a565b50503461016b57602036600319011261016b5760209181906001600160a01b03610a63610c94565b1681526006845220549051908152f35b50503461016b578160031936011261016b576020906007549051908152f35b9050346101b35760203660031901126101b357816020936001923581528085522001549051908152f35b83346101b05760203660031901126101b057610ad6610c94565b610ade6112ce565b6001600160a01b0316610af2811515610d6b565b6bffffffffffffffffffffffff60a01b600254161760025580f35b919050346101b35760203660031901126101b357610b29610c94565b91610b32611254565b6001600160a01b03831692610b48841515610d6b565b8385528160205260ff8386205416610bcf5760035468010000000000000000811015610bbc579061076e826001610b829401600355610d1e565b8284526020528220805460ff191660011790557f4a2ec0919005accc67763a7c56bf461aa9766aa2bc0e52dc6b5e15dc41e6f3cb8280a280f35b634e487b7160e01b865260418352602486fd5b506020606492519162461bcd60e51b8352820152602060248201527f5072696365466565644b65657065723a20616c726561647920747261636b65646044820152fd5b50503461016b57602036600319011261016b57602090610c38610c33610c94565b6111f6565b90519015158152f35b8491346101b35760203660031901126101b3573563ffffffff60e01b81168091036101b35760209250637965db0b60e01b8114908115610c83575b5015158152f35b6301ffc9a760e01b14905083610c7c565b600435906001600160a01b0382168203610caa57565b600080fd5b602435906001600160a01b0382168203610caa57565b90815180825260208080930193019160005b828110610ce5575050505090565b83516001600160a01b031685529381019392810192600101610cd7565b604090610d1b9392151581528160208201520190610cc5565b90565b600354811015610d555760036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0190600090565b634e487b7160e01b600052603260045260246000fd5b15610d7257565b60405162461bcd60e51b815260206004820152601d60248201527f5072696365466565644b65657065723a207a65726f20616464726573730000006044820152606490fd5b67ffffffffffffffff8111610dcb57604052565b634e487b7160e01b600052604160045260246000fd5b6020810190811067ffffffffffffffff821117610dcb57604052565b90601f8019910116810190811067ffffffffffffffff821117610dcb57604052565b67ffffffffffffffff8111610dcb5760051b60200190565b90610e4182610e1f565b610e4e6040519182610dfd565b8281528092610e5f601f1991610e1f565b0190602036910137565b8051821015610d555760209160051b010190565b6000198114610e8c5760010190565b634e487b7160e01b600052601160045260246000fd5b60006003805491610eb283610e37565b928192825b828110611002575050508115610fe557610ed082610e37565b92815b838110610fbd5750506002546001600160a01b03908116803b156101b35760409160405163ad85bdff60e01b8152848160209460206004830152818381610f1e8d6024830190610cc5565b03925af19081610faa575b50610f3657505050905091565b835b858110610f89575050505050507f57f6eea37015fd464f4614c9667f094618731bd3cf2f4f8887e7487bee22f4fd6040516040815280610f7b6040820185610cc5565b4260208301520390a1600191565b8082610f976001938a610e69565b5116865260068452428587205501610f38565b610fb690959195610db7565b9338610f29565b6001906001600160a01b03610fd28285610e69565b5116610fde8288610e69565b5201610ed3565b9291505060405191610ff683610de1565b80835236813760019190565b61100b81610d1e565b905490831b1c6001600160a01b0316611023816111f6565b80611056575b611037575b50600101610eb7565b8561104f91611049600194988a610e69565b52610e7d565b949061102e565b506007548610611029565b9190811015610d555760051b0190565b356001600160a01b0381168103610caa5790565b9190808252602080920192916000805b8382106110a457505050505090565b9091929394853560018060a01b0381168091036101b3578152830194830193929160010190611095565b600390600354916110de83610e37565b92600091825b8281106111585750508115905061113b576110fe81610e37565b9060005b818110611113575050909150600191565b6001906001600160a01b036111288288610e69565b51166111348286610e69565b5201611102565b50905060405161114a81610de1565b600081526000368137600091565b61116181610d1e565b905490831b1c6001600160a01b0316611179816111f6565b611187575b506001016110e4565b8461119991611049600194978a610e69565b939061117e565b6111a86110ce565b901580156111ed575b6111e7575161753090818102918183041490151715610e8c5761c35081810191828211610e8c576008540101809111610e8c5790565b50600090565b508051156111b1565b6001600160a01b031660009081526004602052604081205460ff1615610d1b5760066020526040812054801561124d574203904282116112395750600554111590565b634e487b7160e01b81526011600452602490fd5b5050600190565b3360009081527f7b9cfcd80c34284e1e317e6a7922df060ded849fe6c95b6b7bc8dbd6f085447960205260409020547f68e9e1a1a294fefbfbf8f57edd22025faa9a9f634abfb07c3da4e23117d53b619060ff16156112b05750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156112b05750565b3360009081527f0363fc6b1c9d3a5e0ab0c2ddc08deb0f30108829db06e84f370d2858ffe78c4660205260409020547ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab9060ff16156112b05750565b80600052600060205260406000203360005260205260ff60406000205416156112b05750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461140357808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146114035780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60026001541461148e576002600155565b604051633ee5aeb560e01b8152600490fdfea26469706673582212203852addcb85fec75b62d700c4b6ceacdf3933d325dba2234a53f68d5046f8d6664736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}