0 txs
1 call
constructor
constructor(address deployer)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DEPLOYER_ROLE
viewfunction DEPLOYER_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
createCollateralManager
nonpayablefunction createCollateralManager(address initialAdmin, address depositTokenRegistry, address poolRegistry, address collateralAdmin, address collateralTokenHandler) returns (address)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
events
CollateralManagerCreated
event CollateralManagerCreated(address indexed collateralManager, address defaultAdmin, address indexed depositTokenRegistry, address indexed poolRegistry, address collateralAdmin, address collateralTokenHandler)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
creation bytecode
0x6080346100bd57601f6155c638819003918201601f19168301916001600160401b038311848410176100c2578084926020946040528339810103126100bd57516001600160a01b0381168082036100bd57156100785761006890610062336100d8565b50610156565b506040516153af90816101f78239f35b60405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206465706c6f796572206164647265737300000000000000006044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff1661015257818052816020526040822081835260205260408220600160ff1982541617905533916000805160206155a68339815191528180a4600190565b5090565b6001600160a01b031660008181527f740c5e3e456bed56f053f960110118ba9b95a1f5359a82283516fb2e81b6e37e60205260408120549091907ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c9060ff166101f157808352826020526040832082845260205260408320600160ff198254161790556000805160206155a6833981519152339380a4600190565b50509056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a7146103175750816320552a6414610203578163248a9ca3146101d95781632f2ff15d146101af57816336568abe1461016957816391d1485414610123578163a217fddf14610108578163d547741f146100c5575063ecd002611461008857600080fd5b346100c157816003193601126100c157602090517ffc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c8152f35b5080fd5b9190503461010457806003193601126101045761010091356100fb60016100ea61036a565b938387528660205286200154610385565b610447565b5080f35b8280fd5b5050346100c157816003193601126100c15751908152602090f35b9050346101045781600319360112610104578160209360ff9261014461036a565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b8383346100c157806003193601126100c15761018361036a565b90336001600160a01b038316036101a05750610100919235610447565b5163334bd91960e11b81528390fd5b9190503461010457806003193601126101045761010091356101d460016100ea61036a565b6103c9565b90503461010457602036600319011261010457816020936001923581528085522001549051908152f35b8383346100c15760a03660031901126100c1576001600160a01b03833581811694908590036103135761023461036a565b93604435928084168094036100c1576064359181831680930361031057608435968288168098036100c157865190614ebd8083019683881067ffffffffffffffff8911176102fd57508460a0928492620004bd84398c89521696876020820152888a8201528660608201528a608082015203019082f09081156102f257506020977f7aacca680ccfbe12396de38b58b05f0e9093132c2babcc403bf388205bf6c84a926060921697889488519283528a83015287820152a451908152f35b8651903d90823e3d90fd5b634e487b7160e01b855260419052602484fd5b80fd5b8380fd5b849134610104576020366003190112610104573563ffffffff60e01b81168091036101045760209250637965db0b60e01b8114908115610359575b5015158152f35b6301ffc9a760e01b14905083610352565b602435906001600160a01b038216820361038057565b600080fd5b80600052600060205260406000203360005260205260ff60406000205416156103ab5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461044257808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146104425780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fe60e0346200023a57601f62004ebd38819003918201601f191683019291906001600160401b038411838510176200023f578160a092849260409687528339810103126200023a57620000518162000255565b6200005f6020830162000255565b6200006c84840162000255565b90620000896080620000816060870162000255565b950162000255565b6001805460ff19168155600255906001600160a01b0390848216156200022957811692831562000218578116918215620002075781861615620001f65716918215620001e55760a05260805260c052620000f09190620000e9906200026a565b50620002ea565b5051614b1090816200038d82396080518181816103ad015281816106f401528181610f73015281816113ce0152818161175a01528181611ad801528181611cf601528181611f790152818161222b0152818161268b01528181612acc015281816130140152818161335f015281816134b101528181613706015281816138df01528181613bf201526146ba015260a05181818161077201528181611428015281816118140152818161228101528181613752015261470a015260c0518181816102bd015281816110ab015281816114d601528181611feb015281816122e001528181612bb1015281816130b30152613c550152f35b8551635e16796b60e01b8152600490fd5b8651632bf381d360e11b8152600490fd5b86516323de2f2360e11b8152600490fd5b8651637bfd2e8360e01b8152600490fd5b865163016ed19f60e21b8152600490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200023a57565b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff16620002e657818052816020526040822081835260205260408220600160ff19825416179055339160008051602062004e9d8339815191528180a4600190565b5090565b6001600160a01b031660008181527f5e540e72d9f4eeb9e4a0c9c33729d78ffe9872a0a65850c94b18241cd93d375f60205260408120549091907fbd162f0ed5d9ba0d62460e28548c2d494e547f6a13b10c140ac720c9196c50f99060ff166200038757808352826020526040832082845260205260408320600160ff1982541617905560008051602062004e9d833981519152339380a4600190565b50509056fe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a7146141ed57508063058517b514613fa0578063060c35b414613b6f5780630e1a795f1461389c578063126d01e5146138275780631a3f3d72146136bf5780631bdbd03d14613463578063248a9ca3146134375780632807bf54146132e85780632f2ff15d146132ab5780633264c8ad14612f5157806334d4584314612e5e57806336568abe14612e165780633f4ba83a14612d86578063426713ed14612a09578063499abc30146126425780635c975abb1461261f5780635d6ee059146125ae5780636439dbfb1461255f57806368637549146125335780636a1ed7af146121de578063726f4e25146102a75780638019f52e14611f2c57806381dba3da14611ef15780638456cb5914611e7257806384a6f4cf14611d7557806390ca263414611ca757806391d1485414611c5c57806399807e4c14611c02578063a217fddf14611be6578063a2a4b5f614611a61578063a323dd2914611843578063a981c7b4146117fe578063ad65438114611789578063afcff50f14611744578063b4c2fbc6146116f5578063b5a051c714611303578063d465fe0514610eb1578063d547741f14610e70578063d5db936614610bfb578063da0ec67c146106a6578063dbe55c3214610648578063e27338e9146102ec578063eb88187e146102a75763f2762c651461021057600080fd5b346102a45760203660031901126102a457600435808252600c602052604090912080546001600160a01b03929083161561028c575061028a60a09260018301541691600281015490600381015460ff6005600484015493015416926040519586526020860152604085015260608401526080830190614274565bf35b60249060405190630c4dee0360e01b82526004820152fd5b80fd5b50346102a457806003193601126102a4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a4576020806003193601126106445760043561030a614a0c565b610312614340565b8083526004825260408320546001600160a01b039081161580610632575b80610620575b8061060e575b806105fc575b806105ea575b6105d157818452600483526040842054849082161561050b57508184526004835260ff6003604086200154165b60048110156104f7576104de578184526013835260408420908082541660405163c699e63360e01b81528160048201528581602481867f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104d35787916104a6575b501561048e5782916002916004889501600160ff19825416179055845260148652836040812055825416910154813b1561047f5782916024839260405194859384926377f9798960e01b845260048401525af180156104835761046b575b50507f5b6c89a59d70fab47a4f2267219bcbf6c92f93a9a1902f97c66e2ecb60f1ae30604051924284523393a380f35b6104749061450d565b61047f57823861043b565b8280fd5b6040513d84823e3d90fd5b602490604051906327946f5760e21b82526004820152fd5b6104c69150863d88116104cc575b6104be818361456c565b81019061458d565b386103dd565b503d6104b4565b6040513d89823e3d90fd5b604051634fb2f21960e01b815260048101839052602490fd5b634e487b7160e01b85526021600452602485fd5b60068452604085205482161561053357508184526006835260ff600360408620015416610375565b60088452604085205482161561055b57508184526008835260ff600460408620015416610375565b60098452604085205482161561058357508184526009835260ff600660408620015416610375565b600c845260408520548216156105ab5750818452600c835260ff600560408620015416610375565b6013845260408520828154166105c2575b50610375565b60ff91506004015416386105bc565b604051630c4dee0360e01b815260048101839052602490fd5b50601383528060408520541615610348565b50600c83528060408520541615610342565b5060098352806040852054161561033c565b50600883528060408520541615610336565b50600683528060408520541615610330565b5080fd5b50346102a45760203660031901126102a4576040600435918281526004602052209060018060a01b038083541691821561028c57506106a2906001840154169260ff6003600283015492015416906040519485948561430f565b0390f35b50346102a45760603660031901126102a4576106c0614297565b6044359190602480356106d1614a0c565b60405163c699e63360e01b8082523360048301526020946001600160a01b0393927f00000000000000000000000000000000000000000000000000000000000000008516919087818881865afa908115610bf0578991610bd3575b5015610bbc573315610baa578416918215610baa578315610b98578690866040518094819382523360048301525afa9081156104d3578791610b7b575b5015610b6457827f0000000000000000000000000000000000000000000000000000000000000000169160405163109932f960e01b815282600482015286818781875afa908115610b59578891610b3c575b5015610b2a57866004936040519485809263b58eb63f60e01b82525afa9283156104d3578793610b06575b50865b835181101561092757846107fd8286614655565b5116338952601180895260408a20826000528952886040600020549283610831575b5050505061082c90614630565b6107e9565b60405163313ce56760e01b81529190829060049082905afa90811561091c578b916108ef575b50607f60ff82169160011c1690600382018092116108d55760068111156108e85760051981019081116108d5575b808211156108cd5750905b604d82116108bc5750600a0a106108aa573880888161081f565b60405163e1bbd79d60e01b8152600490fd5b634e487b7160e01b8b52600452878afd5b905090610890565b634e487b7160e01b8c526004839052898cfd5b508a610885565b61090f91508a3d8c11610915575b610907818361456c565b810190614842565b38610857565b503d6108fd565b6040513d8d823e3d90fd5b868584848c8c8b338252600d8752604082208560005287526040600020548015159081610ad1575b50610a9d5761095f600354614630565b958660035561096e848661467f565b6040519160c083018381106001600160401b03821117610a88578992918b916040523385528185018a815260408601918a8352600c60608801948b86526080890196875260a08901978b89528b52528060408a209751169060018060a01b03199182895416178855600188019251169082541617905551600285015551600384015551600483015551916004831015610a765750604092916005610a12920161499d565b338152600d87522083600052855283604060002055610a31818361467f565b90604051928352858301526040820152426060820152827fcd0e78ef51a24f568847544dc8a9c3b49ca5f628579100332c795d5ba331311960803393a4604051908152f35b634e487b7160e01b8452602160045283fd5b84634e487b7160e01b60005260416004526000fd5b86600d6064926040519263047a747160e01b845260048401528201526c383937b334ba103932ba3ab93760991b6044820152fd5b835250600c8752604082206005015460ff166004811015610af357158861094f565b50634e487b7160e01b8252602160045290fd5b610b239193503d8089833e610b1b818361456c565b8101906145a5565b91386107e6565b604051638907df2f60e01b8152600490fd5b610b539150873d89116104cc576104be818361456c565b386107bb565b6040513d8a823e3d90fd5b6040516327946f5760e21b81523360048201528490fd5b610b929150863d88116104cc576104be818361456c565b38610769565b604051635e85ae7360e01b8152600490fd5b604051630f58058360e11b8152600490fd5b6040516327946f5760e21b81523360048201528690fd5b610bea9150883d8a116104cc576104be818361456c565b3861072c565b6040513d8b823e3d90fd5b50346102a4576020806003193601126106445760043590610c1a614a0c565b8183526004815260408320546001600160a01b03919082161580610e5e575b80610e4c575b80610e3a575b80610e28575b80610e16575b610dfd578284526004815260408420548490831615610d3757508284526004815260ff6003604086200154165b60048110156104f757610d1e5782845260068152604084209180835416803303610cf55760038401600360ff1982541617905585526007825260016040862093015416600052528160406000205533907f5175c25eef106c1c7948e82256014879c3123bb3a964a45547a66c0c8686a7b68380a380f35b604051632e31c97160e21b81523360048201526001600160a01b03919091166024820152604490fd5b604051634fb2f21960e01b815260048101849052602490fd5b600682526040852054831615610d5f57508284526006815260ff600360408620015416610c7e565b600882526040852054831615610d8757508284526008815260ff600460408620015416610c7e565b600982526040852054831615610daf57508284526009815260ff600660408620015416610c7e565b600c82526040852054831615610dd75750828452600c815260ff600560408620015416610c7e565b601382526040852083815416610dee575b50610c7e565b60ff9150600401541638610de8565b604051630c4dee0360e01b815260048101849052602490fd5b50601381528160408520541615610c51565b50600c81528160408520541615610c4b565b50600981528160408520541615610c45565b50600881528160408520541615610c3f565b50600681528160408520541615610c39565b50346102a45760403660031901126102a457610ead600435610e906142ad565b9080845283602052610ea860016040862001546143f4565b614498565b5080f35b50346102a45760208060031936011261064457600435610ecf614a0c565b610ed7614340565b8083526004825260408320546001600160a01b039290831615806112f1575b806112df575b806112cd575b806112bb575b806112a9575b6105d15781845260048152604084205484908416156111e357508184526004815260ff6003604086200154165b60048110156104f7576104de578184526009815260408420838154169360405163c699e63360e01b81528560048201528381602481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104d35787916111c6575b50156111ad57908591600282018181541660405190868260048163313ce56760e01b948582525afa9182156111a2578692611183575b50600185019184835416916040519081528881600481865afa8015610b5957670de0b6b3a76400009261102b928a9261115c575b5061101f6110259160058b0154614aae565b9161485b565b90614a9b565b049886526011875260408620906000528652604060002061104d898254614a2a565b90558284541685526012865282604086209154166000528552604060002061107688825461467f565b905560068301600160ff19825416179055818354168452600b85526040842082825416600052855283604060002055600382807f0000000000000000000000000000000000000000000000000000000000000000169254169284541693015490803b15611158576111019385809460405196879586948593632ccbef8b60e01b855260048501614a79565b03925af1801561048357611140575b50507f5448fc42bac1142771c150df1ce71acd98ce65f0a4c6a1be2f10574f1a808b76906040519384523393a380f35b6111499061450d565b611154578338611110565b8380fd5b8480fd5b61102591925061117b61101f918d803d1061091557610907818361456c565b92915061100d565b61119b919250873d891161091557610907818361456c565b9038610fd9565b6040513d88823e3d90fd5b6040516327946f5760e21b815260048101869052602490fd5b6111dd9150843d86116104cc576104be818361456c565b38610fa3565b60068252604085205484161561120b57508184526006815260ff600360408620015416610f3b565b60088252604085205484161561123357508184526008815260ff600460408620015416610f3b565b60098252604085205484161561125b57508184526009815260ff600660408620015416610f3b565b600c825260408520548416156112835750818452600c815260ff600560408620015416610f3b565b60138252604085208481541661129a575b50610f3b565b60ff9150600401541638611294565b50601381528260408520541615610f0e565b50600c81528260408520541615610f08565b50600981528260408520541615610f02565b50600881528260408520541615610efc565b50600681528260408520541615610ef6565b50346102a4576020806003193601126106445760043590611322614a0c565b61132a614a37565b611332614340565b8183526004815260408320546001600160a01b039190821615806116e3575b806116d1575b806116bf575b806116ad575b8061169b575b610dfd5782845260048152604084205484908316156115d557508284526004815260ff6003604086200154165b60048110156104f757610d1e578284526004815260408420828154169260405163c699e63360e01b81528460048201528381602481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156104d35787916115b8575b501561159f5760018201928184541660405163109932f960e01b81528160048201528281602481877f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bf0578991611582575b5015610b2a57879560038501600160ff1982541617905586526005825260408620906000528152846040600020556002830192828454915416865260108252604086208386541660005282526114b4604060002091825461467f565b9055600f835491838654168752526114d160408620918254614a2a565b9055807f0000000000000000000000000000000000000000000000000000000000000000169254169054823b15611154576040516363f9262360e01b81526001600160a01b0392909216600483015260248201529082908290604490829084905af180156104835761156e575b505033907febe9ebad1f94d904bf6ceb5d3978c3dc93097863ef3226a72c45bd9ac812e4888380a3600160025580f35b6115779061450d565b61064457813861153e565b6115999150833d85116104cc576104be818361456c565b38611458565b6040516327946f5760e21b815260048101859052602490fd5b6115cf9150843d86116104cc576104be818361456c565b386113fe565b6006825260408520548316156115fd57508284526006815260ff600360408620015416611396565b60088252604085205483161561162557508284526008815260ff600460408620015416611396565b60098252604085205483161561164d57508284526009815260ff600660408620015416611396565b600c825260408520548316156116755750828452600c815260ff600560408620015416611396565b60138252604085208381541661168c575b50611396565b60ff9150600401541638611686565b50601381528160408520541615611369565b50600c81528160408520541615611363565b5060098152816040852054161561135d565b50600881528160408520541615611357565b50600681528160408520541615611351565b50346102a45760403660031901126102a45761170f614297565b60406117196142ad565b9260018060a01b03809316815260116020522091166000526020526020604060002054604051908152f35b50346102a457806003193601126102a4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a45760203660031901126102a4576004358082526013602052604090912080546001600160a01b0316908115610dfd5760a092506117f76001820154916002810154600360ff60048401541692015493604051958652602086015260408501526060840190614274565b6080820152f35b50346102a457806003193601126102a4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102a45760208060031936011261064457600435611861614a0c565b8083526004825260408320546001600160a01b039081161580611a4f575b80611a3d575b80611a2b575b80611a19575b80611a07575b6105d157818452600483526040842054849082161561194157508184526004835260ff6003604086200154165b60048110156104f7576104de57818452600c8352604084209080825416803303610cf55760058301600360ff198254161790558552600d8452600160408620920154166000528252826040600020557fca6ab66afe9600059a167dcbfd275cfa7afe4b693ea1a06b2faca24a66cdfbc7604051924284523393a380f35b60068452604085205482161561196957508184526006835260ff6003604086200154166118c4565b60088452604085205482161561199157508184526008835260ff6004604086200154166118c4565b6009845260408520548216156119b957508184526009835260ff6006604086200154166118c4565b600c845260408520548216156119e15750818452600c835260ff6005604086200154166118c4565b6013845260408520828154166119f8575b506118c4565b60ff91506004015416386119f2565b50601383528060408520541615611897565b50600c83528060408520541615611891565b5060098352806040852054161561188b565b50600883528060408520541615611885565b5060068352806040852054161561187f565b50346102a457611a70366142c3565b611a7b929192614a0c565b611a83614340565b818452602092601384526040852060018060a01b0380825416918215611bcd576004019081549060ff82166004811015611bb957611ba057876024916040519283809263c699e63360e01b82528860048301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610bf0578991611b83575b5015611b6a5760ff19166002179055855260148452604080862086905580518181527fe261d0d20f02e2d693f43dc92c772c79fb81f4fdfc1c0c62bed810aa83a863de939092611b5b9284019190614a58565b9342908201528033940390a380f35b6040516327946f5760e21b815260048101849052602490fd5b611b9a9150883d8a116104cc576104be818361456c565b38611b08565b604051634fb2f21960e01b815260048101889052602490fd5b634e487b7160e01b8a52602160045260248afd5b604051630c4dee0360e01b815260048101879052602490fd5b50346102a457806003193601126102a457602090604051908152f35b50346102a45760203660031901126102a4576040600435918281526006602052209060018060a01b038083541691821561028c57506106a2906001840154169260ff6003600283015492015416906040519485948561430f565b50346102a45760403660031901126102a4576040611c786142ad565b91600435815280602052209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346102a45760403660031901126102a457611cc1614297565b611cc96142ad565b60405163c699e63360e01b81526001600160a01b03928316600482018190526020949293929185816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115611d6a578391611d4d575b501561048e57906040918152601085522091166000528152604060002054604051908152f35b611d649150863d88116104cc576104be818361456c565b38611d27565b6040513d85823e3d90fd5b50346102a457611d84366142c3565b9291611d8e614a0c565b611d96614340565b80835260209160048352604084209460018060a01b039586815416968715611e5957600382019788549860ff8a166004811015611bb957611ba05760027f9b9676dd800c6ba4456bb9c497ae9a55cf0d29c47cb3d295f8e9550308d304ec9798999a60ff19161790558852600587526002604089209260018101938385541660005289528960406000205501549154168752600f8652611e3b60408820918254614a2a565b9055611e536040519283928784523397840191614a58565b0390a380f35b604051630c4dee0360e01b815260048101869052602490fd5b50346102a457806003193601126102a457611e8b6143ba565b611e93614a0c565b600160ff19815416176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1337f0ae361295852529d8b42994a031ab5898aeef3c14e6f87814327cf8f167bcd538280a280f35b50346102a457806003193601126102a45760206040517fbd162f0ed5d9ba0d62460e28548c2d494e547f6a13b10c140ac720c9196c50f98152f35b50346102a45760403660031901126102a457611f46614297565b9060248035611f53614a0c565b60405163c699e63360e01b81523360048201526020946001600160a01b039391868184817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156111a25786916121c1575b50156121ab578316928315610baa578215610b985733855260108652604085208460005286528260406000205410612199576040516370a0823160e01b81527f0000000000000000000000000000000000000000000000000000000000000000909116600482015285818381875afa90811561218e579083918691612158575b50106121465733845260078552604084208360005285526040600020548015159081612111575b506120e257506040612064600354614630565b9384600355612099825161207781614551565b33815285888201528484820152826060820152868352600688528383206149b5565b338152600786522082600052845282604060002055604051908152827f9305e1b4055bd3ade38709f56faa8b46a671cb14d9568e0d732a9109fb5f2d5f853393a4604051908152f35b8460086064926040519263047a747160e01b84526004840152820152673a3930b739b332b960c11b6044820152fd5b85525060068552604084206003015460ff166004811015612133571538612051565b50634e487b7160e01b8452602160045283fd5b60405163eeced69960e01b8152600490fd5b809250878092503d8311612187575b612171818361456c565b81010312612182578290513861202a565b600080fd5b503d612167565b6040513d87823e3d90fd5b60405163a05846bb60e01b8152600490fd5b506040516327946f5760e21b8152336004820152fd5b6121d89150873d89116104cc576104be818361456c565b38611faa565b50346102a45760403660031901126102a4576121f8614297565b9060248035612205614a0c565b60405163c699e63360e01b81523360048201526020946001600160a01b039391868184817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156111a2578691612516575b50156121ab5760405163109932f960e01b8152818516600482018190529490878185817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156104d35787916124f9575b5015610b2a578415610baa578315610b985786839160405192838092636c24a76f60e01b82528960048301527f0000000000000000000000000000000000000000000000000000000000000000165afa9081156111a25790849187916124c8575b50106124b6576040516326d2bdd760e01b8152908682600481335afa9182156111a2578692612485575b5061235b906123558561234f3361468c565b9261486c565b9061467f565b1161247357828452600f85526040842061237683825461467f565b9055338452600585526040842083600052855260406000205490811515918261243d575b505061242b5760406123ad600354614630565b93846003556123e282516123c081614551565b33815285888201528484820152826060820152868352600488528383206149b5565b338152600586522082600052845282604060002055604051908152827f822298daa5d059b672b3ef0d2a99936ce4c100cf9aaf98d6e8f9d6ed7b9db842853393a4604051908152f35b604051638c34a7cd60e01b8152600490fd5b85526004808752604086206003015460ff169250821015612461575015388061239a565b634e487b7160e01b8552602160045284fd5b60405163cb6d12b760e01b8152600490fd5b9091508681813d83116124af575b61249d818361456c565b8101031261218257519061235b61233d565b503d612493565b604051637222ae5760e11b8152600490fd5b809250888092503d83116124f2575b6124e1818361456c565b810103126121825783905138612313565b503d6124d7565b6125109150883d8a116104cc576104be818361456c565b386122b2565b61252d9150873d89116104cc576104be818361456c565b3861225c565b50346102a45760203660031901126102a4576020612557612552614297565b61468c565b604051908152f35b50346102a45760403660031901126102a457612579614297565b60406125836142ad565b9260018060a01b038093168152600e6020522091166000526020526020604060002054604051908152f35b50346102a45760203660031901126102a4576004358082526009602052604090912080546001600160a01b03929083161561028c575061028a6080926001830154169160038101549060ff600660048301549201541691604051948552602085015260408401526060830190614274565b50346102a457806003193601126102a457602060ff600154166040519015158152f35b50346102a45760803660031901126102a45761265c614297565b6126646142ad565b9161266d614a0c565b60405163c699e63360e01b81523360048201526024919060208184817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156104835782916129ea575b50156121ab576126d760643560443561467f565b60405163313ce56760e01b808252919591906020816004816001600160a01b038a165afa9081156129c05784916129cb575b506040519182526020826004816001600160a01b0387165afa9182156129c05761276392670de0b6b3a764000092612750928792612997575b5061101f611025918b614aae565b049561275e87604435614a9b565b6148e0565b9161276e8387614a2a565b93338252600b6020526040822060018060a01b0384166000526020526040600020548015908115612973575b501561290d576127ab600354614630565b95866003556040519060e082018281106001600160401b038211176128f85760409081523383526001600160a01b039182166020808501918252878416858401908152606086018a8152608087018c815260a088018f815260c089018b81528f8c526009909552958a20975188546001600160a01b031990811691891691909117895594516001890180548716918916919091179055915160028801805490951696169590951790925592516003850155516004808501919091559051600584015590519290831015610a7657509260407fa9f18ed78d3abd45e03f6b41fa5f30671bbccd1bbf5e506e1820400298ddfb79936128af60209a9460068b980161499d565b33808252600b8b529190206001600160a01b03929092166000818152928a52604092839020869055825196875260208701979097529085019190915292606090a4604051908152f35b83634e487b7160e01b60005260416004526000fd5b60849060396040519162461bcd60e51b8352602060048401528201527f50656e64696e672072657475726e207265717565737420616c726561647920656044820152783c34b9ba39903337b9103837b7b616ba37b5b2b7103830b4b960391b6064820152fd5b8352506009602052604082206006015460ff166004811015610af35715153861279a565b6110259192506129b861101f9160203d60201161091557610907818361456c565b929150612742565b6040513d86823e3d90fd5b6129e4915060203d60201161091557610907818361456c565b38612709565b612a03915060203d6020116104cc576104be818361456c565b386126c3565b50346102a457602090816003193601126102a457600435612a28614a0c565b612a30614340565b8082526004835260408220546001600160a01b03919082161580612d74575b80612d62575b80612d50575b80612d3e575b80612d2c575b61028c578083526004845260408320548390831615612c6657508083526004845260ff6003604085200154165b6004811015612c5257612c3a578083526008845260408320828154169260405163c699e63360e01b81528460048201528681602481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156111a2578691612c1d575b501561159f5784958160018401541693600384015493600460028201549101600160ff19825416179055868852600a8352604088208660005283528760406000205586885260118352604088208660005283526040600020612b5f868254614a2a565b90558688526012835260408820866000528352612b82604060002091825461467f565b90557f552b2b18477db9ce679e498d1fad2d123ec04aaccb29f0d1bd9bd5633f0c9e75604051928584523393a37f000000000000000000000000000000000000000000000000000000000000000016803b1561115857612bfc9385809460405196879586948593632ccbef8b60e01b855260048501614a79565b03925af1801561048357612c0d5750f35b612c169061450d565b6102a45780f35b612c349150873d89116104cc576104be818361456c565b38612afc565b60249060405190634fb2f21960e01b82526004820152fd5b634e487b7160e01b84526021600452602484fd5b600685526040842054831615612c8e57508083526006845260ff600360408520015416612a94565b600885526040842054831615612cb657508083526008845260ff600460408520015416612a94565b600985526040842054831615612cde57508083526009845260ff600660408520015416612a94565b600c85526040842054831615612d065750808352600c845260ff600560408520015416612a94565b601385526040842083815416612d1d575b50612a94565b60ff9150600401541638612d17565b50601384528160408420541615612a67565b50600c84528160408420541615612a61565b50600984528160408420541615612a5b565b50600884528160408420541615612a55565b50600684528160408420541615612a4f565b50346102a457806003193601126102a457612d9f6143ba565b60015460ff811615612e045760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1337fbc62b76d07b6b23d40da208a679dc265debff79f55e9d5f288f4d6a89d17ce388280a280f35b604051638dfc202b60e01b8152600490fd5b50346102a45760403660031901126102a457612e306142ad565b336001600160a01b03821603612e4c57610ead90600435614498565b60405163334bd91960e11b8152600490fd5b50346102a45760203660031901126102a457600435612e7b614a0c565b80825260136020526040822080546001600160a01b0316908115610dfd57600401805460ff81166004811015612f3d57612f2457823303612efd5760039060ff191617905582526014602052816040812055604051904282527f4d181dc1ba506616fc6b063f10da67bb0e5f57763b8da06f0ee36156e2ccb71660203393a380f35b604051632e31c97160e21b81523360048201526001600160a01b0384166024820152604490fd5b604051634fb2f21960e01b815260048101859052602490fd5b634e487b7160e01b86526021600452602486fd5b50346102a457602090816003193601126102a457600435612f70614a0c565b612f78614340565b8082526004835260408220546001600160a01b03939084161580613299575b80613287575b80613275575b80613263575b80613251575b6105d157818352600481526040832054839085161561318b57508183526004815260ff6003604085200154165b6004811015612c52576104de57818352600c815260408320848154169460405163c699e63360e01b81528660048201528381602481857f0000000000000000000000000000000000000000000000000000000000000000165afa9081156111a257869161316e575b501561315557849560058396959601600160ff198254161790558452600d835260408420906001830191818354166000528452846040600020556002830193845490828554168752600e8152604087209083855416600052526130ad604060002091825461467f565b905580807f000000000000000000000000000000000000000000000000000000000000000016925416925416925490803b15611158576131079385809460405196879586948593632ccbef8b60e01b855260048501614a79565b03925af1801561048357613141575b505033907f187f740af7ae3435d92923d41c6a75d8004ea397a7a120a9af04cc63a97af9f58380a380f35b61314a9061450d565b610644578138613116565b6040516327946f5760e21b815260048101879052602490fd5b6131859150843d86116104cc576104be818361456c565b38613044565b6006825260408420548516156131b357508183526006815260ff600360408520015416612fdc565b6008825260408420548516156131db57508183526008815260ff600460408520015416612fdc565b60098252604084205485161561320357508183526009815260ff600660408520015416612fdc565b600c8252604084205485161561322b5750818352600c815260ff600560408520015416612fdc565b601382526040842085815416613242575b50612fdc565b60ff915060040154163861323c565b50601381528360408420541615612faf565b50600c81528360408420541615612fa9565b50600981528360408420541615612fa3565b50600881528360408420541615612f9d565b50600681528360408420541615612f97565b50346102a45760403660031901126102a457610ead6004356132cb6142ad565b90808452836020526132e360016040862001546143f4565b61441a565b50346102a4576132f7366142c3565b9291613301614a0c565b613309614340565b808352602091600c8352604084209460018060a01b039586815416968715611e5957600582019788549860ff8a166004811015611bb957611ba05760405163c699e63360e01b81526004810183905288816024817f000000000000000000000000000000000000000000000000000000000000000088165afa90811561342c578a9161340f575b50156133f65760027f58c187b7550b17a6b6a3cfd37f74de435699e4dd79e86c53c24acf98f5810d2a9798999a60ff19161790558852600d875260016040892092015416600052855285604060002055611e536040519283928784523397840191614a58565b6040516327946f5760e21b815260048101839052602490fd5b6134269150893d8b116104cc576104be818361456c565b38613390565b6040513d8c823e3d90fd5b50346102a45760203660031901126102a457600160406020926004358152808452200154604051908152f35b50346102a45760403660031901126102a45761347d614297565b906024359061348a614a0c565b60405163c699e63360e01b81523360048201526020936001600160a01b03939185816024817f000000000000000000000000000000000000000000000000000000000000000089165afa9081156129c05784916136a2575b501561368a578316918215610baa578115610b98573381526011855260408120836000528552816040600020541061367857338152600a8552604081208360005285526040600020548015159081613641575b5061362f57613545600354614630565b93846003556040519061355782614536565b338252868201858152604083018581526060840191868352608085019386855289875260088b5280604088209651169060018060a01b0319918288541617875560018701925116908254161790555160028401555160038301555190600482101561361b576040929160046135cc920161499d565b338152600a865220826000528452826040600020556040519080825284820152827fa4e5d77a7ed89c63ab948e669ba53580b1d2e33354347b1fc3cfd0cd8c86a51d60403393a4604051908152f35b634e487b7160e01b83526021600452602483fd5b6040516315b8df0960e11b8152600490fd5b905081526008855260ff6004604083200154166004811015613664571538613535565b634e487b7160e01b82526021600452602482fd5b6040516309dedad760e21b8152600490fd5b6040516327946f5760e21b8152336004820152602490fd5b6136b99150863d88116104cc576104be818361456c565b386134e2565b50346102a457602090816003193601126102a4576136db614297565b60405163c699e63360e01b81526001600160a01b0391821660048201819052919290819085816024817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561048357829161380a575b5015611b6a5760405163b58eb63f60e01b81529381856004817f000000000000000000000000000000000000000000000000000000000000000085165afa9485156104835782956137ee575b50815b85518110156137e4578161379a8288614655565b5116858452601288526040842081600052885260406000205490816137ca575b50506137c590614630565b613786565b946123556137dc926137c5949761486c565b9390386137ba565b8684604051908152f35b6138039195503d8084833e610b1b818361456c565b9338613783565b6138219150863d88116104cc576104be818361456c565b38613737565b50346102a45760203660031901126102a4576040600435918281526008602052209060018060a01b038083541691821561028c57508261028a91600160a09501541690600281015460ff6004600384015493015416926040519586526020860152604085015260608401526080830190614274565b50346102a457602090816003193601126102a4576004356138bb614a0c565b60405163c699e63360e01b81523360048201526001600160a01b03929084816024817f000000000000000000000000000000000000000000000000000000000000000088165afa908115610483578291613b52575b501561368a576040516326d2bdd760e01b8152908482600481335afa918215613b45578192613b16575b5081831115613b04576040516335e7a11160e01b81528581600481335afa908115610483578291613ad7575b50421015613ac5573381526014855260408120548015159081613aa2575b50613a6b57613994600354614630565b9384600355604051906139a682614536565b338252868201848152604083018681526060840191428352608085019386855289875260138b526040872095511660018060a01b03198654161785555160018501555160028401555160038301555190600482101561361b57928560407f09f1498a5c1c72edb2b1975d8214a43f2e931b97b4f6a0960ead14efb76b1a1694613a36613a6095600485990161499d565b33815260148a52205560405191829133964291846040919493926060820195825260208201520152565b0390a3604051908152f35b60405163047a747160e01b815260048101869052600e60248201526d6c696d697420696e63726561736560901b6044820152606490fd5b905081526013855260ff6004604083200154166004811015613664571538613984565b604051631ccc2f2360e01b8152600490fd5b90508581813d8311613afd575b613aee818361456c565b81010312612182575138613966565b503d613ae4565b604051631451908d60e01b8152600490fd5b9091508481813d8311613b3e575b613b2e818361456c565b810103126121825751903861393a565b503d613b24565b50604051903d90823e3d90fd5b613b699150853d87116104cc576104be818361456c565b38613910565b50346102a457602090816003193601126102a45760043591613b8f614a0c565b613b97614340565b613b9f614a37565b828252600681526040822080546001600160a01b03919082168015613f6257600382019384549460ff86166004811015613f4e57613f105760405163c699e63360e01b81526004810184905282816024817f00000000000000000000000000000000000000000000000000000000000000008a165afa908115610b59578891613ef3575b5015613eb8578287526010825260408720948060018601541695868952835260026040892054950154809510613e73577f000000000000000000000000000000000000000000000000000000000000000016956040516370a0823160e01b815287600482015283816024818a5afa908115610bf0579086918a91613e3e575b5010613de45760019060ff1916179055818652600781526040862084875281528560408120558186526010815260408620848752815260408620613ce7848254614a2a565b90558186526011815260408620908487525260408520613d0883825461467f565b90556040519533907f37ada4e122d22ba16bf6fd75f4b541944a2e37626478a4baaddc0f3a5282cd5b8780a3833b15611158578580613d5784889463a64b6e5f60e01b84528760048501614a79565b038183875af180156129c057613dd0575b839450823b15613dcb57604051631c1f36a560e11b81526001600160a01b0392909216600483015260248201529082908290604490829084905af1801561048357613db7575b50600160025580f35b613dc09061450d565b6102a4578038613dae565b505050fd5b929093613ddc9061450d565b918390613d68565b60405162461bcd60e51b815260048101849052602c60248201527f496e73756666696369656e742062616c616e636520666f7220636f6c6c61746560448201526b3930b6103a3930b739b332b960a11b6064820152608490fd5b809250858092503d8311613e6c575b613e57818361456c565b81010312613e685785905138613ca2565b8880fd5b503d613e4d565b60405162461bcd60e51b815260048101849052601c60248201527f496e73756666696369656e7420726573657276656420616d6f756e74000000006044820152606490fd5b60405162461bcd60e51b8152600481018390526013602482015272141bdbdb081b9bdd081c9959da5cdd195c9959606a1b6044820152606490fd5b613f0a9150833d85116104cc576104be818361456c565b38613c23565b60405162461bcd60e51b815260048101839052601660248201527552657175657374206973206e6f742070656e64696e6760501b6044820152606490fd5b634e487b7160e01b88526021600452602488fd5b60405162461bcd60e51b815260048101859052601660248201527514995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b50346102a4576020806003193601126106445760043590613fbf614a0c565b8183526004815260408320546001600160a01b0390811615806141db575b806141c9575b806141b7575b806141a5575b80614193575b610dfd5782845260048252604084205484908216156140cd57508284526004825260ff6003604086200154165b60048110156104f757610d1e5782845260048252604084209181835416918233036140bb57600f9260038501600360ff198254161790558652600582526002604087209460018101958387541689528452876040812055015493541685525261409060408420918254614a2a565b905533907fc38670002073cfe9c145fdd636ac4b08d06d3cc6d8f2f73ef08d7df8d079004e8380a380f35b604051637e7a8adf60e01b8152600490fd5b6006835260408520548216156140f557508284526006825260ff600360408620015416614022565b60088352604085205482161561411d57508284526008825260ff600460408620015416614022565b60098352604085205482161561414557508284526009825260ff600660408620015416614022565b600c8352604085205482161561416d5750828452600c825260ff600560408620015416614022565b601383526040852082815416614184575b50614022565b60ff915060040154163861417e565b50601382528060408520541615613ff5565b50600c82528060408520541615613fef565b50600982528060408520541615613fe9565b50600882528060408520541615613fe3565b50600682528060408520541615613fdd565b9050346106445760203660031901126106445760043563ffffffff60e01b811680910361047f576020925063022745c760e21b8114908115614263575b8115614238575b5015158152f35b637965db0b60e01b811491508115614252575b5038614231565b6301ffc9a760e01b1490503861424b565b637dde43d960e11b8114915061422a565b9060048210156142815752565b634e487b7160e01b600052602160045260246000fd5b600435906001600160a01b038216820361218257565b602435906001600160a01b038216820361218257565b604060031982011261218257600435916024356001600160401b039283821161218257806023830112156121825781600401359384116121825760248483010111612182576024019190565b6001600160a01b03918216815291166020820152604081019190915260808101929161433e9160600190614274565b565b3360009081527f5e540e72d9f4eeb9e4a0c9c33729d78ffe9872a0a65850c94b18241cd93d375f60205260409020547fbd162f0ed5d9ba0d62460e28548c2d494e547f6a13b10c140ac720c9196c50f99060ff161561439c5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff161561439c5750565b80600052600060205260406000203360005260205260ff604060002054161561439c5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461449357808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146144935780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b6001600160401b03811161452057604052565b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b0382111761452057604052565b608081019081106001600160401b0382111761452057604052565b90601f801991011681019081106001600160401b0382111761452057604052565b90816020910312612182575180151581036121825790565b9060209081838203126121825782516001600160401b0393848211612182570181601f82011215612182578051938411614520578360051b90604051946145ee8584018761456c565b85528380860192820101928311612182578301905b828210614611575050505090565b81516001600160a01b0381168103612182578152908301908301614603565b600019811461463f5760010190565b634e487b7160e01b600052601160045260246000fd5b80518210156146695760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b9190820180921161463f57565b6040805163c699e63360e01b81526001600160a01b03928316600482018190529293929160209182816024817f00000000000000000000000000000000000000000000000000000000000000008a165afa9081156148375760009161481a575b501561480357805163b58eb63f60e01b8152946000929083876004817f000000000000000000000000000000000000000000000000000000000000000085165afa9687156147f65784976147da575b50835b87518110156147d05781614752828a614655565b51168660005260118452846000208160005284528460002054806147ba575b50866000526010845284600020816000528452846000205490816147a0575b505061479b90614630565b61473e565b956123556147b29261479b949861486c565b949038614790565b9561235582976147c99361486c565b9438614771565b5092955050505050565b6147ef9197503d8086833e610b1b818361456c565b953861473b565b50505051903d90823e3d90fd5b516327946f5760e21b815260048101839052602490fd5b6148319150833d85116104cc576104be818361456c565b386146ec565b82513d6000823e3d90fd5b90816020910312612182575160ff811681036121825790565b60ff16604d811161463f57600a0a90565b60405163313ce56760e01b81529190602090839060049082906001600160a01b03165afa9182156148d4576148b3926148ad916000916148b6575b5061485b565b90614900565b90565b6148ce915060203d811161091557610907818361456c565b386148a7565b6040513d6000823e3d90fd5b81156148ea570490565b634e487b7160e01b600052601260045260246000fd5b670de0b6b3a7640000918183029160001984820993838086109503948086039514614990578483111561497e5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60405163227bc15360e01b8152600490fd5b5050906148b392506148e0565b9060048110156142815760ff80198354169116179055565b815181546001600160a01b039182166001600160a01b0319918216178355602084015160018401805491909316911617905560408201516002820155606090910151600481101561428157600361433e920161499d565b60ff60015416614a1857565b60405163d93c066560e01b8152600490fd5b9190820391821161463f57565b6002805414614a465760028055565b604051633ee5aeb560e01b8152600490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b6001600160a01b03918216815291166020820152604081019190915260600190565b8181029291811591840414171561463f57565b670de0b6b3a76400009081810291818304149015171561463f57614ad46148b39261485b565b906148e056fea26469706673582212200f29d4eac7b6a37f9d122127a5cb2127d30b42bdc2a85d277defe889f9a07eba64736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da26469706673582212207bea4b1cba70ac14e1744101090cf7b8d92dd12f0195f63542f93affc82f44c564736f6c634300081400332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d0000000000000000000000006c15b25e9750dccb698c1a4023f34015bfe57649